name: update-yt-dlp

on:
  workflow_dispatch:
    inputs:
      logLevel:
        description: "Log level"
        required: true
        default: "warning"
        type: choice
        options:
          - info
          - warning
          - debug
  schedule:
    - cron: "0 0 * * *"

jobs:
  update-yt-dlp:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          ref: "dev"

      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: "3.11"

      - name: Install uv
        run: pip install uv

      - name: Sync dependencies
        run: uv venv && . .venv/bin/activate && uv sync

      - name: Check and update yt-dlp
        id: ytdlp_update
        run: |
          . .venv/bin/activate
          VER=$(uv pip list --outdated | awk '$1 == "yt-dlp" {print $3}')
          if [ -n "$VER" ]; then
            echo "YTLDLP_VER=${VER}" >> "$GITHUB_OUTPUT"
            uv pip install --upgrade yt-dlp[default]
            uv sync --upgrade
            UPDATED=true
          else
            UPDATED=false
          fi
          echo "UPDATED=${UPDATED}" >> "$GITHUB_OUTPUT"

      - name: Create Pull Request
        if: steps.ytdlp_update.outputs.UPDATED == 'true'
        uses: peter-evans/create-pull-request@v5
        with:
          title: "[yt-dlp] automated update to ${{ steps.ytdlp_update.outputs.YTLDLP_VER }}"
          commit-message: "Update yt-dlp to ${{ steps.ytdlp_update.outputs.YTLDLP_VER }}"
          body: "This is an automated request to update yt-dlp dependency to ${{ steps.ytdlp_update.outputs.YTLDLP_VER }}"
          delete-branch: true
