super-table 1.1.1

Build beautiful tables. Supports content wrapping, alignment and cell spanning.
Documentation
name: Publish to crates.io

on:
  workflow_run:
    workflows: ["Quality"]
    types: [completed]
    branches: [main]
  workflow_dispatch:

permissions:
  contents: write

jobs:
  detect-version-changes:
    name: Detect Version Changes
    if: ${{ github.event.workflow_run.conclusion == 'success' || github.event_name == 'workflow_dispatch' }}
    runs-on: ubuntu-latest
    outputs:
      version_changed: ${{ steps.check.outputs.version_changed }}
      version: ${{ steps.check.outputs.version }}
    steps:
      - uses: actions/checkout@v4
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          fetch-depth: 0

      - name: Check version changes
        id: check
        run: |
          CURRENT_VERSION=$(grep '^version = ' Cargo.toml | head -1 | sed 's/version = "\(.*\)"/\1/')
          echo "version=$CURRENT_VERSION" >> $GITHUB_OUTPUT

          if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
            echo "version_changed=true" >> $GITHUB_OUTPUT
            exit 0
          fi

          LATEST_TAG=$(git describe --tags --abbrev=0 --match "v*" 2>/dev/null || echo "v0.0.0")
          TAG_VERSION=${LATEST_TAG#v}

          echo "Current version: $CURRENT_VERSION"
          echo "Latest tag version: $TAG_VERSION"

          if [ "$CURRENT_VERSION" != "$TAG_VERSION" ]; then
            echo "version_changed=true" >> $GITHUB_OUTPUT
          else
            echo "version_changed=false" >> $GITHUB_OUTPUT
          fi

  publish:
    name: Publish to crates.io
    needs: detect-version-changes
    if: needs.detect-version-changes.outputs.version_changed == 'true'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable

      - name: Install nextest
        uses: taiki-e/install-action@nextest

      - name: Run tests
        run: cargo nextest run --all-features --features=_integration_test
        env:
          TERM: xterm-256color

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

      - name: Create tag
        run: |
          git config user.name "github-actions[bot]"
          git config user.email "github-actions[bot]@users.noreply.github.com"
          git tag v${{ needs.detect-version-changes.outputs.version }}
          git push origin v${{ needs.detect-version-changes.outputs.version }}