name: Open a release PR
on:
  workflow_dispatch:
    inputs:
      crate:
        description: Crate to release
        required: true
        type: choice
        options:
          - atomic-file-install
          - bin
          - binstalk
          - binstalk-bins
          - binstalk-fetchers
          - binstalk-registry
          - binstalk-manifests
          - binstalk-types
          - binstalk-downloader
          - cargo-toml-workspace
          - detect-targets
          - detect-wasi
          - fs-lock
          - normalize-path
      version:
        description: Version to release
        required: true
        type: string
        default: patch

jobs:
  make-release-pr:
    permissions:
      id-token: write # Enable OIDC
      pull-requests: write
      contents: write
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Configure toolchain
        run: |
          rustup toolchain install --profile minimal --no-self-update nightly
          rustup default nightly
      - uses: chainguard-dev/actions/setup-gitsign@main
      - name: Install cargo-release
        uses: taiki-e/install-action@v2
        with:
          tool: cargo-release,cargo-semver-checks

      - uses: cargo-bins/release-pr@v2.1.1
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          version: ${{ inputs.version }}
          crate-path: crates/${{ inputs.crate }}
          pr-label: release
          pr-release-notes: ${{ inputs.crate == 'bin' }}
          pr-template-file: .github/scripts/release-pr-template.ejs
          check-semver: ${{ inputs.crate != 'bin' && inputs.crate != 'leon-macros' }}
          check-package: true
        env:
          RUSTFLAGS: --cfg reqwest_unstable