build(deps): bump peter-evans/create-pull-request from 7 to 8 (#12) #12
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Generate docs | |
| on: | |
| push: | |
| branches: | |
| - main | |
| paths: | |
| - ".github/workflows/generate-docs.yml" | |
| - "scripts/**" | |
| # Run every day at 00:00 UTC to refresh docs from BlueLua source repos. | |
| schedule: | |
| - cron: "0 0 * * *" | |
| workflow_dispatch: | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| jobs: | |
| discover: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| repos: ${{ steps.repos.outputs.repos }} | |
| steps: | |
| - name: Discover source repos | |
| id: repos | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| ORG: ${{ github.repository_owner }} | |
| run: | | |
| set -euo pipefail | |
| tmp="$(mktemp -d)" | |
| repos_file="$tmp/repos.jsonl" | |
| gh api --paginate "/orgs/${ORG}/repos" \ | |
| --jq '.[] | select(.archived == false and .disabled == false) | [.name, .clone_url] | @tsv' \ | |
| > "$repos_file" | |
| found="[]" | |
| while IFS=$'\t' read -r name clone_url; do | |
| [ "$name" != "${ORG}.github.io" ] || continue | |
| if gh api "/repos/${ORG}/${name}/contents/types" >/dev/null 2>&1; then | |
| found="$(jq --arg name "$name" --arg clone_url "$clone_url" \ | |
| '. + [{ "name": $name, "clone_url": $clone_url }]' <<< "$found")" | |
| fi | |
| done < "$repos_file" | |
| echo "repos=$(jq -c . <<< "$found")" >> "$GITHUB_OUTPUT" | |
| generate: | |
| needs: discover | |
| if: ${{ needs.discover.outputs.repos != '[]' }} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| repo: ${{ fromJson(needs.discover.outputs.repos) }} | |
| steps: | |
| - name: Checkout docs repo | |
| uses: actions/checkout@v6 | |
| - name: Checkout source repo | |
| run: git clone --depth 1 "${CLONE_URL}" "${RUNNER_TEMP}/source" | |
| env: | |
| CLONE_URL: ${{ matrix.repo.clone_url }} | |
| - name: Setup LuaJIT | |
| uses: leafo/gh-actions-lua@v13 | |
| with: | |
| luaVersion: "luajit" | |
| - name: Generate docs | |
| run: | | |
| set -euo pipefail | |
| output_dir="docs/src/${REPO_NAME}/api" | |
| mkdir -p "$output_dir" | |
| find "$output_dir" -maxdepth 1 -type f -name "*.md" ! -name "ecodes.md" -delete | |
| luajit scripts/generate-api-docs.lua "${RUNNER_TEMP}/source/types" "$output_dir" | |
| env: | |
| REPO_NAME: ${{ matrix.repo.name }} | |
| - name: Format docs | |
| run: | | |
| set -euo pipefail | |
| if compgen -G "docs/src/${REPO_NAME}/api/*.md" > /dev/null; then | |
| npx --yes prettier@3.8.3 --write "docs/src/${REPO_NAME}/api/*.md" | |
| fi | |
| env: | |
| REPO_NAME: ${{ matrix.repo.name }} | |
| - name: Open docs PR | |
| uses: peter-evans/create-pull-request@v8 | |
| with: | |
| commit-message: "docs(${{ matrix.repo.name }}): generate API docs" | |
| title: "docs(${{ matrix.repo.name }}): generate API docs" | |
| body: "Generate and format API docs from `${{ matrix.repo.name }}` LuaLS type annotations." | |
| branch: "automation/generate-docs-${{ matrix.repo.name }}" | |
| add-paths: | | |
| docs/src/${{ matrix.repo.name }}/api |