name: Update CI/CD Pipeline

on:
  schedule: 
    - cron: '@daily'

env:
  GITEATOKEN: ${{ secrets.GITEATOKEN }}

jobs:
  update:
    runs-on: ubuntu-latest
    container: git.hofer.link/philipp/ci-images:rust-latest
    steps:
    - uses: actions/checkout@v3

    - name: Cache Cargo dependencies
      uses: Swatinem/rust-cache@v2

    - name: Run Update Script
      run: ./update_laws.sh

    - name: Check for changes and create branch if necessary
      run: |
        git config --global user.email "ci-bot@example.com"
        git config --global user.name "CI Bot"
        if [ -n "$(git status --porcelain)" ]; then
          echo "Changes detected. Committing and preparing to push."
          if git ls-remote --exit-code --heads origin update-branch; then
            echo "Branch 'update-branch' exists. Checking it out."
            git fetch
            git checkout remote/update-branch
          else
            echo "Branch 'update-branch' does not exist. Creating it."
            git checkout -b update-branch
          fi
          git add .
          git commit -m "Automated update of laws"
          git push origin update-branch
        else
          echo "No changes detected."
          exit 0
        fi

    - name: Create Pull Request
      if: success()
      run: |
        if [ -n "$(git log origin/main..HEAD)" ]; then
          curl -X POST "https://git.hofer.link/api/v1/repos/philipp/risp/pulls" \
          -H "Authorization: token $GITEATOKEN" \
          -H "Content-Type: application/json" \
          -d '{"title":"Update laws","head":"update-branch","base":"main","body":"Automated update of laws.", "assignees": ["philipp"]}'
        else
          echo "No changes to create a pull request."
        fi
