worktrunk-wip 0.2.1

wt wip — append-only cross-machine WIP sync for worktrunk
name: release

on:
  push:
    branches: [main]

env:
  CARGO_TERM_COLOR: always
  CARGO_INCREMENTAL: 0

jobs:
  release-please:
    runs-on: ubuntu-24.04
    permissions:
      contents: write # create release PR, tag, and GitHub release
      pull-requests: write
    outputs:
      release_created: ${{ steps.release.outputs.release_created }}
      tag_name: ${{ steps.release.outputs.tag_name }}
    steps:
      - id: release
        uses: googleapis/release-please-action@v4
        with:
          release-type: rust

  # Tags created with the default GITHUB_TOKEN don't trigger other workflows,
  # so publishing runs here as a gated job rather than on a tag trigger.
  publish:
    needs: release-please
    if: needs.release-please.outputs.release_created == 'true'
    runs-on: ubuntu-24.04
    permissions:
      contents: read
      id-token: write # crates.io Trusted Publishing (OIDC)
    steps:
      - uses: actions/checkout@v6

      - uses: Swatinem/rust-cache@v2

      - name: Test
        run: cargo test --release --locked

      - name: Authenticate with crates.io
        id: auth
        uses: rust-lang/crates-io-auth-action@v1

      - name: Publish to crates.io
        run: cargo publish --locked
        env:
          CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}