radr-cli 0.3.0

CLI application to manage Architecture Decision Records (ADRs)
Documentation
name: Publish to crates.io on tag

on:
  push:
    tags:
      - 'v*'

jobs:
  publish:
    name: Publish crate
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Set up Rust
        uses: dtolnay/rust-toolchain@stable

      - name: Extract version from tag
        id: version
        run: |
          TAG="${GITHUB_REF#refs/tags/}"
          TAG_NO_V="${TAG#v}"
          echo "TAG_VERSION=${TAG_NO_V}" >> "$GITHUB_ENV"
          echo "version=${TAG_NO_V}" >> "$GITHUB_OUTPUT"

      - name: Verify Cargo.toml version matches tag
        run: |
          CARGO_VERSION=$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -n1)
          echo "Cargo.toml version: $CARGO_VERSION"
          echo "Tag version: $TAG_VERSION"
          if [ "$CARGO_VERSION" != "$TAG_VERSION" ]; then
            echo "Error: Cargo.toml version ($CARGO_VERSION) does not match tag ($TAG_VERSION)" >&2
            exit 1
          fi

      - name: Dry-run package
        run: cargo package --verbose

      - name: Publish to crates.io
        env:
          CARGO_REGISTRY_TOKEN: ${{ secrets.CRATES_IO_TOKEN }}
        run: cargo publish --verbose