name: Sync Feature Branch to Main

on:
  schedule:
    - cron: '0 0 * * *' # Runs daily at midnight
  workflow_dispatch: # Manual trigger

jobs:
  sync-feature:
    runs-on: ubuntu-latest
    steps:
      - name: Check if PR has merged
        id: check_pr
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          if [[ $(gh pr ls -H sync-feature-to-main -B master -R kubesphere/kubekey) == "" ]]; then
            echo "pr_merged=true" >> $GITHUB_OUTPUT
          else
            echo "pr_merged=false" >> $GITHUB_OUTPUT
          fi 

      - name: Checkout master branch
        if: ${{ steps.check_pr.outputs.pr_merged == 'true' }}
        uses: actions/checkout@v3
        with:
          ref: master

      - name: Checkout feature branch
        if: ${{ steps.check_pr.outputs.pr_merged == 'true' }}
        uses: actions/checkout@v3
        with:
          ref: feature-gitops
          path: feature-branch

      - name: Sync feature branch to master/feature directory
        if: ${{ steps.check_pr.outputs.pr_merged == 'true' }}
        run: |
          rm -rf feature && mkdir -p feature
          rm -rf feature-branch/vendor
          cp -r feature-branch/* feature/
          rm -rf feature-branch

      - name: Push changes and create PR
        if: ${{ steps.check_pr.outputs.pr_merged == 'true' }}
        uses: peter-evans/create-pull-request@v7
        with:
          commit-message: 'Sync feature branch to master/feature directory'
          delete-branch: true
          branch: sync-feature-to-main
          sign-commits: true
          title: '[ci-bot] Sync feature branch to master/feature directory'
          body: |
            This PR syncs the feature branch to the master/feature directory.
            ```release-note
            none
            ```
