name: Sync Engine Version

on:
  workflow_dispatch:

jobs:
  sync-engine:
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write

    steps:
      - name: Checkout Repository
        uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
        with:
          repository: flutteractionsbot/flutter
          token: ${{ secrets.FLUTTERACTIONSBOT_CP_TOKEN }}
          ref: master

      - name: Configure git
        env:
          GH_TOKEN: ${{ secrets.FLUTTERACTIONSBOT_CP_TOKEN }}
          REF_NAME: ${{ github.ref_name }}
        run: |
          git config user.name "flutteractionsbot"
          git config user.email "<flutter-actions-bot@google.com>"
          git remote add upstream https://github.com/flutter/flutter.git
          git fetch upstream $REF_NAME

          BRANCH_NAME="update-engine-$(date +%s)"
          echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV

          git checkout -b "$BRANCH_NAME" upstream/$REF_NAME

      - name: Generate and Capture Hash
        id: generate-hash
        run: |
          # Capture the OLD hash (handle case where file doesn't exist)
          if [ -f bin/internal/engine.version ]; then
            OLD_HASH=$(< bin/internal/engine.version)
          else
            OLD_HASH="None (New File)"
          fi
          echo "OLD_HASH=$OLD_HASH" >> $GITHUB_ENV

          chmod +x bin/internal/last_engine_commit.sh
          NEW_HASH=$(./bin/internal/last_engine_commit.sh)

          echo "$NEW_HASH" > bin/internal/engine.version
          echo "ENGINE_HASH=$NEW_HASH" >> $GITHUB_ENV

      - name: Check for Changes
        id: git-check
        run: |
          # -f adds even if it's in the .gitignore (which it usually is)
          git add -f bin/internal/engine.version

          if git diff --cached --exit-code bin/internal/engine.version; then
            echo "changed=false" >> $GITHUB_OUTPUT

            # Nice big No-Op Summary
            echo "## ✅ Engine version already up to date" >> $GITHUB_STEP_SUMMARY
            echo "The engine is already at hash \`$ENGINE_HASH\`. No PR was created." >> $GITHUB_STEP_SUMMARY
          else
            echo "changed=true" >> $GITHUB_OUTPUT
          fi

      - name: Create PR if Changed
        if: steps.git-check.outputs.changed == 'true'
        env:
          GH_TOKEN: ${{ secrets.FLUTTERACTIONSBOT_CP_TOKEN }}
          REF_NAME: ${{ github.ref_name }}
        run: |
          git commit -m "Update engine.version to $ENGINE_HASH"
          git push origin "$BRANCH_NAME"

          # Capture the PR URL
          PR_URL=$(gh pr create \
            --title "[$REF_NAME] Sync engine.version to $ENGINE_HASH" \
            --body "Updates the engine.version file from \`$OLD_HASH\` to \`$ENGINE_HASH\`." \
            --repo flutter/flutter \
            --base $REF_NAME \
            --head flutteractionsbot:$BRANCH_NAME)

          # Nice big PR Success Summary
          echo "## 🚀 PR Created Successfully" >> $GITHUB_STEP_SUMMARY
          echo "Updated engine version from \`$OLD_HASH\` to \`$ENGINE_HASH\`." >> $GITHUB_STEP_SUMMARY
          echo "" >> $GITHUB_STEP_SUMMARY
          echo "🔗 **View Pull Request:** $PR_URL" >> $GITHUB_STEP_SUMMARY
