# .github/workflows/docsci.yml
# DocsCI: Automated documentation testing in GitHub Actions
# Full docs: https://snippetci.com/docs/integrations/github-actions
# Get free API token: https://snippetci.com/signup

name: DocsCI

on:
  push:
    branches: [main, master]
  pull_request:
    paths:
      - 'docs/**'
      - '*.md'
      - '**/*.mdx'

jobs:
  docs-ci:
    name: Verify documentation
    runs-on: ubuntu-latest
    timeout-minutes: 10
    permissions:
      pull-requests: write

    steps:
      - uses: actions/checkout@v4

      - name: Archive docs
        run: tar czf docs.tar.gz docs/ *.md 2>/dev/null || tar czf docs.tar.gz docs/

      - name: Run DocsCI
        id: docsci
        run: |
          set -euo pipefail
          RESULT=$(curl -sf -X POST https://snippetci.com/api/runs/queue \
            -H "Authorization: Bearer ${{ secrets.DOCSCI_TOKEN }}" \
            -F "docs_archive=@docs.tar.gz" \
            -F "branch=${{ github.head_ref || github.ref_name }}" \
            -F "commit_sha=${{ github.sha }}")
          echo "$RESULT" | jq .
          echo "result=$RESULT" >> $GITHUB_OUTPUT
          echo "$RESULT" | jq -e '.status == "passed"'

      - name: Post PR summary
        if: always() && github.event_name == 'pull_request'
        uses: actions/github-script@v7
        with:
          script: |
            const result = JSON.parse('${{ steps.docsci.outputs.result }}' || '{}');
            const status = result.status || 'unknown';
            const findings = result.finding_count ?? 0;
            const runId = result.run_id;
            const icon = status === 'passed' ? '✅' : '❌';
            github.rest.issues.createComment({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: context.issue.number,
              body: [
                `## ${icon} DocsCI: **${status}**`,
                `- **Findings:** ${findings}`,
                `- **Run:** [View full report](https://snippetci.com/runs/${runId})`,
              ].join('\n'),
            });

# ─────────────────────────────────────────────────────────────────
# Need more? See:
#   Advanced (OpenAPI drift): https://snippetci.com/docs/integrations/github-actions#advanced
#   Monorepo setup:           https://snippetci.com/docs/integrations/github-actions#monorepo
#   GitLab CI:                https://snippetci.com/docs/integrations/gitlab-ci
#   Nightly scheduled run:    https://snippetci.com/docs/integrations/github-actions#nightly
# ─────────────────────────────────────────────────────────────────
