name: Test install-script on: merge_group: pull_request: types: - opened - reopened - synchronize paths: - install-from-binstall-release.ps1 - install-from-binstall-release.sh - .github/workflows/install-script.yml push: branches: - main paths: - install-from-binstall-release.ps1 - install-from-binstall-release.sh - .github/workflows/install-script.yml concurrency: group: ${{ github.workflow }}-${{ github.ref || github.event.pull_request.number || github.sha }} cancel-in-progress: true env: CARGO_TERM_COLOR: always jobs: unix: strategy: fail-fast: false matrix: os: [macos-latest, ubuntu-latest] set_cargo_home: [t, f] set_binstall_version: ['no', 'with-v', 'without-v'] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - name: Set `CARGO_HOME` if: matrix.set_cargo_home == 't' run: | CARGO_HOME="$(mktemp -d 2>/dev/null || mktemp -d -t 'cargo-home')" mkdir -p "${CARGO_HOME}/bin" echo "CARGO_HOME=$CARGO_HOME" >> "$GITHUB_ENV" - name: Set `BINSTALL_VERSION` if: matrix.set_binstall_version != 'no' env: STRIP_V: ${{ matrix.set_binstall_version }} GH_TOKEN: ${{ github.token }} run: | # fetch most recent release tag. BINSTALL_VERSION="$(gh release list --json name --jq '[.[] | select(.name | startswith("v")) | .name] | first')" if [[ $STRIP_V == 'without-v' ]]; then BINSTALL_VERSION="${BINSTALL_VERSION#v*}"; fi echo "Setting BINSTALL_VERSION=$BINSTALL_VERSION" echo "BINSTALL_VERSION=$BINSTALL_VERSION" >> "$GITHUB_ENV" - name: Install `cargo-binstall` using scripts run: ./install-from-binstall-release.sh env: GITHUB_TOKEN: ${{ secrets.CI_RELEASE_TEST_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - name: Verify `cargo-binstall` installation run: | which cargo-binstall cargo binstall -vV windows: strategy: fail-fast: false matrix: set_cargo_home: [t, f] set_binstall_version: ['no', 'with-v', 'without-v'] runs-on: windows-latest steps: - uses: actions/checkout@v4 - name: Set `CARGO_HOME` if: matrix.set_cargo_home == 't' shell: bash run: | CARGO_HOME="$(mktemp -d 2>/dev/null || mktemp -d -t 'cargo-home')" mkdir -p "${CARGO_HOME}/bin" echo "CARGO_HOME=$CARGO_HOME" >> "$GITHUB_ENV" - name: Set `BINSTALL_VERSION` if: matrix.set_binstall_version != 'no' shell: bash env: GH_TOKEN: ${{ github.token }} STRIP_V: ${{ matrix.set_binstall_version }} run: | # fetch most recent release name. BINSTALL_VERSION="$(gh release list --json name --jq '[.[] | select(.name | startswith("v")) | .name] | first')" if [[ $STRIP_V == 'without-v' ]]; then BINSTALL_VERSION="${BINSTALL_VERSION#v*}"; fi echo "Setting BINSTALL_VERSION=$BINSTALL_VERSION" echo "BINSTALL_VERSION=$BINSTALL_VERSION" >> "$GITHUB_ENV" - name: Install `cargo-binstall` using scripts run: ./install-from-binstall-release.ps1 env: GITHUB_TOKEN: ${{ secrets.CI_RELEASE_TEST_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - name: Verify `cargo-binstall` installation run: cargo binstall -vV windows-bash: strategy: fail-fast: false matrix: set_cargo_home: [t, f] set_binstall_version: ['no', 'with-v', 'without-v'] runs-on: windows-latest steps: - uses: actions/checkout@v4 - name: Set `CARGO_HOME` if: matrix.set_cargo_home == 't' shell: bash run: | CARGO_HOME="$(mktemp -d 2>/dev/null || mktemp -d -t 'cargo-home')" mkdir -p "${CARGO_HOME}/bin" echo "CARGO_HOME=$CARGO_HOME" >> "$GITHUB_ENV" - name: Set `BINSTALL_VERSION` if: matrix.set_binstall_version != 'no' shell: bash env: GH_TOKEN: ${{ github.token }} STRIP_V: ${{ matrix.set_binstall_version }} run: | # fetch most recent release name. BINSTALL_VERSION="$(gh release list --json name --jq '[.[] | select(.name | startswith("v")) | .name] | first')" if [[ $STRIP_V == 'without-v' ]]; then BINSTALL_VERSION="${BINSTALL_VERSION#v*}"; fi echo "Setting BINSTALL_VERSION=$BINSTALL_VERSION" echo "BINSTALL_VERSION=$BINSTALL_VERSION" >> "$GITHUB_ENV" - name: Install `cargo-binstall` using scripts shell: bash run: ./install-from-binstall-release.sh env: GITHUB_TOKEN: ${{ secrets.CI_RELEASE_TEST_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - name: Verify `cargo-binstall` installation shell: bash run: cargo binstall -vV