name: Sync and Release Extensions

on:
  push:
    branches:
      - main
    paths:
      - manifest.json

env:
  ACTIONS_RUNNER_DEBUG: false
  CI_COMMIT_MESSAGE: CI Build Artifacts
  GH_TOKEN: ${{ github.token }}

jobs:
  sync:
    if: github.repository_owner == 'rancher'
    name: Sync and Release Extensions
    runs-on: ubuntu-latest
    permissions: write-all
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Configure Git
        run: |
          git config user.name github-actions
          git config user.email github-actions@github.com
      
      - name: Setup Helm
        uses: azure/setup-helm@v3
        with:
          version: v3.12.1

      - name: Run sync script
        shell: bash
        id: sync_script
        run: |
          chmod +x ./scripts/sync
          ./scripts/sync

      - name: Generate branch name based on date and time
        run: echo "NOW=$(date +'%Y-%m-%d-%H-%M-%S')" >> $GITHUB_ENV

      - name: Commit Changes and push to a branch
        run: |
          git checkout -b sync-${{ env.NOW }}
          git add ./{assets,charts,extensions,icons,index.yaml}
          git commit -a -m "Sync extensions ${{ env.NOW }}"
          git push origin sync-${{ env.NOW }}

      - name: Create Pull Request
        run: |
          # Create the PR using the GitHub CLI
          pr_number=$(gh pr create \
            --title "Create PR for extension sync: ${{ env.NOW }}" \
            --body "This PR was automatically created by a GitHub Action." \
            --base main \
            --head sync-${{ env.NOW }} \
            --fill \
            --repo ${{ github.repository }} | awk '{print $NF}') # Get the PR URL and Extract the last element (the PR number)

          # Check if pr_number is empty (creation failed)
          if [ -z "$pr_number" ]; then
            echo "Failed to create PR."
            exit 1
          fi
          
          # Store the PR number as an output
          echo "PR_NUMBER=$pr_number" >> $GITHUB_ENV

      - name: Merge Pull Request when approved
        run: |
          # Merge the PR using the GitHub CLI
          gh pr merge ${{ env.PR_NUMBER }} --auto --delete-branch --merge --repo ${{ github.repository }}
  
      - name: Run chart-releaser
        uses: helm/chart-releaser-action@v1.5.0
        with:
          charts_dir: ./charts/*
        env:
          CR_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
          CR_SKIP_EXISTING: true
