name: Publish to Crates.io on: release: types: [published] workflow_dispatch: jobs: publish: name: Publish to crates.io runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - name: Verify version matches tag if: github.event_name == 'release' run: | TAG_VERSION=${GITHUB_REF#refs/tags/v} CARGO_VERSION=$(cargo metadata --format-version 1 --no-deps | jq -r '.packages[0].version') if [ "$TAG_VERSION" != "$CARGO_VERSION" ]; then echo "Tag version ($TAG_VERSION) does not match Cargo.toml version ($CARGO_VERSION)" exit 1 fi - name: Publish to crates.io run: cargo publish env: CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}