name: Update date_created in JSON files

on:
  # Dieser Trigger wird für das Öffnen von PRs sowie für das Aktualisieren von offenen PRs verwendet
  pull_request:
    types: [opened, synchronize]
  schedule:
    # Dieser Trigger wird 4x am Tag ausgelöst, um sicherzustellen, dass das Datum aktualisiert wird
    - cron: "0 0,6,12,18 * * *"  # Führt alle 6 Stunden aus
  workflow_dispatch: # Manuelle Ausführung des Workflows möglich

jobs:
  update-date:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Install yq
        run: |
          sudo apt-get update
          sudo apt-get install -y yq

      - name: Set the current date
        id: set_date
        run: echo "TODAY=$(date -u +%Y-%m-%d)" >> $GITHUB_ENV

      - name: Check for changes in PR
        run: |
          # Hole den PR-Branch
          PR_BRANCH="refs/pull/${{ github.event.pull_request.number }}/merge"
          git fetch origin $PR_BRANCH

          # Liste alle JSON-Dateien im PR auf, die geändert wurden
          CHANGED_JSON_FILES=$(git diff --name-only origin/main...$PR_BRANCH | grep '.json')

          if [ -z "$CHANGED_JSON_FILES" ]; then
            echo "No JSON files changed in this PR."
            exit 0
          fi

          # Gehe alle geänderten JSON-Dateien durch und aktualisiere das Datum
          for file in $CHANGED_JSON_FILES; do
            echo "Updating date_created in $file"
            # Setze das aktuelle Datum
            yq eval ".date_created = \"${{ env.TODAY }}\"" -i "$file"
            git add "$file"
          done

      - name: Commit and push changes
        run: |
          # Prüfe, ob es Änderungen gibt und committe sie
          git config user.name "json-updater-bot"
          git config user.email "github-actions[bot]@users.noreply.github.com"

          git commit -m "Update date_created to ${{ env.TODAY }}" || echo "No changes to commit"

          # Push zurück in den PR-Branch
          git push origin $PR_BRANCH