name: Sync Superpowers Skills

on:
  workflow_dispatch:

concurrency:
  group: superpowers-sync-${{ github.repository }}
  cancel-in-progress: true

env:
  WORKSPACE_DIR: "/home/workspace"
  TARGET_BRANCH: "main"
  SUPERPOWERS_BRANCH: "thirdparty/skill"
  SUPERPOWERS_DIR: "superpowers"
  SUPERPOWERS_LIST: "codex/skills/.sources/superpowers.list"

jobs:
  sync:
    name: Sync to main
    runs-on: ubuntu-22.04

    steps:
      - name: Prepare repo
        run: |
          echo "========================================"
          echo "Prepare repo to WORKSPACE_DIR"
          echo "========================================"

          REPO_NAME="${{ github.event.repository.name }}"
          REPO_DIR="${{ env.WORKSPACE_DIR }}/$REPO_NAME"
          TOKEN="${{ secrets.WORKFLOW }}"
          if [ -n "$TOKEN" ]; then
            REPO_URL="https://oauth2:${TOKEN}@${GITHUB_SERVER_URL#https://}/${{ github.repository }}.git"
          else
            REPO_URL="${GITHUB_SERVER_URL}/${{ github.repository }}.git"
          fi

          if [ -d "$REPO_DIR" ]; then
            if [ -d "$REPO_DIR/.git" ]; then
              cd "$REPO_DIR"
              git clean -fdx
              git reset --hard
              git fetch --all --tags --force --prune --prune-tags
            else
              rm -rf "$REPO_DIR"
            fi
          fi

          if [ ! -d "$REPO_DIR/.git" ]; then
            mkdir -p "${{ env.WORKSPACE_DIR }}"
            git clone "$REPO_URL" "$REPO_DIR"
            cd "$REPO_DIR"
          fi

          # Always run sync from the latest target branch state.
          # This prevents stale/manual dispatch refs from using outdated scripts.
          git fetch origin "${{ env.TARGET_BRANCH }}"
          git checkout -B "${{ env.TARGET_BRANCH }}" "origin/${{ env.TARGET_BRANCH }}"

          git config --global --add safe.directory "$REPO_DIR"
          echo "REPO_DIR=$REPO_DIR" >> $GITHUB_ENV

      - name: Sync superpowers skills to main
        shell: bash
        run: |
          set -euo pipefail
          cd "$REPO_DIR"
          bash .gitea/ci/sync_superpowers.sh
