name: Tag livekit-agents version

on:
  push:
    branches: [main]
    paths:
      - 'pyproject.toml'

permissions:
  contents: write

jobs:
  tag-version:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v6
      with:
        fetch-depth: 2
        fetch-tags: true

    - name: Detect livekit-agents version change
      id: version
      run: |
        set -euo pipefail

        extract_version() {
          local ref="$1"
          git show "$ref:pyproject.toml" 2>/dev/null \
            | grep -oE '"livekit-agents(\[[^]]*\])?==[^"]+"' \
            | head -n1 \
            | sed -E 's/.*==([^"]+)"/\1/' \
            || true
        }

        current=$(extract_version HEAD)
        previous=$(extract_version HEAD^ || true)

        echo "current=$current"
        echo "previous=$previous"

        if [ -z "$current" ]; then
          echo "No livekit-agents==X.Y.Z pin found in pyproject.toml; skipping."
          echo "should_tag=false" >> "$GITHUB_OUTPUT"
          exit 0
        fi

        if [ "$current" = "$previous" ]; then
          echo "livekit-agents version unchanged ($current); skipping."
          echo "should_tag=false" >> "$GITHUB_OUTPUT"
          exit 0
        fi

        echo "livekit-agents bumped: ${previous:-<none>} -> $current"
        echo "should_tag=true" >> "$GITHUB_OUTPUT"
        echo "version=$current" >> "$GITHUB_OUTPUT"

    - name: Create and push tag
      if: steps.version.outputs.should_tag == 'true'
      run: |
        set -euo pipefail
        tag="v${{ steps.version.outputs.version }}"

        if git rev-parse --verify "refs/tags/$tag" >/dev/null 2>&1; then
          existing=$(git rev-list -n1 "$tag")
          if [ "$existing" = "$GITHUB_SHA" ]; then
            echo "Tag $tag already points at $GITHUB_SHA; nothing to do."
            exit 0
          fi
          echo "Error: tag $tag already exists on a different commit ($existing)."
          exit 1
        fi

        git config user.name "github-actions[bot]"
        git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
        git tag -a "$tag" -m "livekit-agents $tag"
        git push origin "$tag"
