name: Run Scraper

on:
  schedule:
    - cron: '0 * * * *' # Every hour
  workflow_dispatch:
  push:
    paths:
      - 'scrape.py'
      - '.github/workflows/main.yml'

jobs:
  scrape:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.13'

      - name: Install uv
        id: setup-uv
        uses: astral-sh/setup-uv@v4
        with:
          enable-cache: true

      - name: Install dependencies
        run: uv sync

      - name: Run script
        run: uv run python scrape.py

      - name: Stage any changes from scraper
        run: |
          git add -A

      - name: Pull latest changes with rebase
        run: |
          git config user.name "github-actions[bot]"
          git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
          # If there are staged changes, commit them temporarily
          if ! git diff --cached --quiet; then
            git commit -m "Temporary commit for rebase"
            git pull --rebase https://${{ secrets.GITHUB_TOKEN }}@github.com/TheLovinator1/wutheringwaves.git master
            # Reset to unstage the temporary commit but keep the changes
            git reset --soft HEAD~1
          else
            git pull --rebase https://${{ secrets.GITHUB_TOKEN }}@github.com/TheLovinator1/wutheringwaves.git master
          fi

      - name: Get the files that will be committed
        id: get_modified_files
        run: |
          files=$(git diff --cached --name-only | xargs | sed 's/ /, /g')
          echo "files=$files" >> $GITHUB_OUTPUT

      - name: Commit and push changes
        run: |
          # Check if there are any staged changes
          if git diff --cached --quiet; then
            echo "No changes to commit"
          else
            git commit -m "Updated files: ${{ steps.get_modified_files.outputs.files }}"
            git push https://${{ secrets.GITHUB_TOKEN }}@github.com/TheLovinator1/wutheringwaves.git HEAD:master
          fi
