# Sync Python releases and create a pull request.
#
# Based on: https://github.com/astral-sh/rye/blob/57b7c089e494138aae29a130afb2e17f447970bf/.github/workflows/sync-python-releases.yml
name: "Sync Python downloads"
on:
  workflow_dispatch:
  schedule:
    - cron: "0 0 * * *"

permissions: {}

jobs:
  sync:
    if: github.repository == 'astral-sh/uv'
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
        with:
          persist-credentials: false
      - uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0
        with:
          version: "latest"
          enable-cache: true
      - name: Sync Python Releases
        run: |
          uv run -- fetch-download-metadata.py
        working-directory: ./crates/uv-python
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Sync Sysconfig Targets
        run: ${GITHUB_WORKSPACE}/crates/uv-dev/sync_sysconfig_targets.sh
        working-directory: ./crates/uv-dev
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: "Create Pull Request"
        uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
        with:
          commit-message: "Sync latest Python releases"
          add-paths: |
            crates/uv-python/download-metadata.json
            crates/uv-dev/src/generate_sysconfig_mappings.rs
            crates/uv-python/src/sysconfig/generated_mappings.rs
          branch: "sync-python-releases"
          title: "Sync latest Python releases"
          body: "Automated update for Python releases."
          base: "main"
          draft: true
