name: Auto Update .app-files

on:
  push:
    branches:
      - main
    paths:
      - 'ct/**.sh'
  workflow_dispatch: 

jobs:
  update-app-files:
    runs-on: ubuntu-latest

    permissions:
      contents: write
      pull-requests: write

    steps:
      # Step 1: Checkout repository
      - name: Checkout repository
        uses: actions/checkout@v2

      # Step 2: Disable file mode changes detection
      - name: Disable file mode changes
        run: git config core.fileMode false

      # Step 3: Set up Git user for committing changes
      - name: Set up Git
        run: |
          git config --global user.name "GitHub Actions"
          git config --global user.email "github-actions[bot]@users.noreply.github.com"

      # Step 4: Install figlet
      - name: Install figlet
        run: sudo apt-get install -y figlet

      # Step 5: Run the updated generate-app-files.sh script
      - name: Run generate-app-files.sh
        run: |
          chmod +x .github/workflows/scripts/generate-app-headers.sh
          .github/workflows/scripts/generate-app-headers.sh
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      # Step 6: Check if there are any changes
      - name: Check if there are any changes
        run: |
          echo "Checking for changes..."
          git add -A  # Untracked Dateien aufnehmen
          git status
          if git diff --cached --quiet; then
            echo "No changes detected."
            echo "changed=false" >> "$GITHUB_ENV"
          else
            echo "Changes detected:"
            git diff --stat --cached
            echo "changed=true" >> "$GITHUB_ENV"
          fi

      # Step 7: Commit and create PR if changes exist
      - name: Commit and create PR if changes exist
        if: env.changed == 'true'
        run: |
          git commit -m "Update .app files"
          git checkout -b pr-update-app-files
          git push origin pr-update-app-files --force
          gh pr create --title "[core] update .app files" \
                       --body "This PR is auto-generated by a GitHub Action to update the .app files." \
                       --head pr-update-app-files \
                       --base main \
                       --label "automated pr"
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      # Step 8: Output success message when no changes
      - name: No changes detected
        if: env.changed == 'false'
        run: echo "No changes to commit. Workflow completed successfully."
