ui_test 0.30.4

A test framework for testing rustc diagnostics output
Documentation
name: Release new version

on:
  workflow_dispatch:
    secrets:
      CARGO_REGISTRY_TOKEN:
        required: true

env:
  RUST_BACKTRACE: 1
  CARGO_TERM_COLOR: always

jobs:
  create-release:
    name: Create release
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          persist-credentials: true

      - name: Install rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          profile: minimal
          override: true

      - uses: Swatinem/rust-cache@v2

      # Determine which version we're about to publish, so we can tag it appropriately.
      # If the tag already exists, then we've already published this version.
      - name: Determine current version
        id: version-check
        run: |
          # Fail on first error, on undefined variables, and on errors in pipes.
          set -euo pipefail
          export VERSION="$(cargo metadata --format-version 1 | \
            jq --arg crate_name ui_test --exit-status -r \
                '.packages[] | select(.name == $crate_name) | .version')"
          echo "version=$VERSION" >> $GITHUB_OUTPUT
          if [[ "$(git tag -l "$VERSION")" != '' ]]; then
            echo "Aborting: Version $VERSION is already published, we found its tag in the repo."
            exit 1
          fi
      
      - name: Install binstall
        run: curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash

      # TODO: Replace this with the cargo-semver-checks v2 GitHub Action when it's stabilized:
      #       https://github.com/obi1kenobi/cargo-semver-checks-action/pull/21
      - name: Semver-check
        run: |
          # Fail on first error, on undefined variables, and on errors in pipes.
          set -euo pipefail
          cargo binstall --locked cargo-semver-checks
          cargo semver-checks check-release

      - name: Publish
        run: cargo publish
        env:
          CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}

      - name: Tag the version
        run: |
          # Fail on first error, on undefined variables, and on errors in pipes.
          set -euo pipefail
          git tag "${{ steps.version-check.outputs.version }}"
          git push origin "${{ steps.version-check.outputs.version }}"

      - uses: taiki-e/create-gh-release-action@v1
        name: Create GitHub release
        with:
          branch: main
          ref: refs/tags/${{ steps.version-check.outputs.version }}
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}