name: Publish docs

on:
  workflow_dispatch:
  workflow_call:
    secrets:
      DOCS_DEPLOY_AWS_ACCESS_KEY: {}
      DOCS_DEPLOY_AWS_API_SECRET: {}

jobs:
  docs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          submodules: true
          lfs: true

      - name: Set up Python
        uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
        with:
          python-version: "3.12"

      - name: Install uv
        uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
        with:
          enable-cache: true
          cache-dependency-glob: "uv.lock"

      - name: Install package, plugins, and docs dependencies
        run: |
          uv sync --all-extras --group docs

      - name: Build HTML Docs
        run: |
          uv run --active pdoc --skip-errors --html --output-dir=docs livekit

      - name: Build Markdown Docs
        run: |
          uv run --active python .github/convert_html_docs.py docs/ docs-md -v --check-links

      - name: S3 Upload
        run: |
          aws s3 sync --delete docs/ s3://livekit-docs/python
          aws s3 sync --delete docs-md/ s3://livekit-docs/python-md
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.DOCS_DEPLOY_AWS_ACCESS_KEY }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.DOCS_DEPLOY_AWS_API_SECRET }}
          AWS_DEFAULT_REGION: "us-east-1"

      - name: Expire cloudfront cache
        run: |
          aws cloudfront create-invalidation --distribution-id EJJ40KLJ3TRY9 --paths "/python/*" "/python-md/*"
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.DOCS_DEPLOY_AWS_ACCESS_KEY }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.DOCS_DEPLOY_AWS_API_SECRET }}
          AWS_DEFAULT_REGION: "us-east-1"
