name: 'API Docs'

on:
  workflow_dispatch:
  schedule:
    - cron: '0 0 * * 1'
  push:
    branches:
      - develop
    paths:
      - ".github/workflows/api_docs.yml"
      - "docs.sh"
      - "src/Sonarr.Api.*/**"
      - "src/Sonarr.Http/**"
      - "src/**/*.csproj"
      - "src/*"

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  api_docs:
    runs-on: ubuntu-latest
    if: github.repository == 'Sonarr/Sonarr'
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@v4

      - name: Setup dotnet
        uses: actions/setup-dotnet@v4
        id: setup-dotnet

      - name: Create openapi.json
        run: ./docs.sh Linux

      - name: Commit API Docs Change
        continue-on-error: true
        run: |
          git config --global user.email "development@sonarr.tv"
          git config --global user.name "Sonarr"
          git checkout -b api-docs
          git add src
          if git status | grep -q modified
          then
            git commit -am 'Automated API Docs update' -m "ignore-downstream"
            git push -f --set-upstream origin api-docs
            curl -X POST -H "Authorization: Bearer ${{ secrets.OPENAPI_PAT }}" -H "Accept: application/vnd.github+json" https://api.github.com/repos/sonarr/sonarr/pulls -d '{"head":"api-docs","base":"develop","title":"Update API docs"}'
          else
            echo "No changes since last run"
          fi
