name: Publish to crates.io

on:
  push:
    tags:
      - v*
env:
  CARGO_TERM_COLOR: always

permissions:
  contents: write
  discussions: write

jobs:
  build-test-publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: brndnmtthws/rust-action@v1
        with:
          toolchain: stable
      - run: cargo build
      - run: cargo test
      - run: cargo login ${{ secrets.CRATES_IO_TOKEN }}
      - run: cargo publish
      - name: Create Release
        id: create_release
        uses: softprops/action-gh-release@v1
        if: startsWith(github.ref, 'refs/tags/')
        with:
          draft: false
          prerelease: false
          discussion_category_name: General
          generate_release_notes: true
