name: Generate and publish developer Wiki on: pull_request: push: branches: [main] workflow_dispatch: concurrency: group: openunifi-wiki cancel-in-progress: false permissions: code: read jobs: validate-wiki: runs-on: ubuntu-latest steps: - name: Check out source repository uses: actions/checkout@v4 with: fetch-depth: 2 path: source - name: Check patch whitespace run: git -C source diff --check HEAD^ HEAD - name: Validate documentation generator run: | mkdir -p "$RUNNER_TEMP/openuf-wiki" python3 source/scripts/docs/generate-wiki.py --output "$RUNNER_TEMP/openuf-wiki" python3 source/scripts/docs/generate-wiki.py --check --output "$RUNNER_TEMP/openuf-wiki" publish-wiki: if: gitea.event_name != 'pull_request' needs: validate-wiki runs-on: ubuntu-latest permissions: code: read wiki: write steps: - name: Check out source repository uses: actions/checkout@v4 with: path: source - name: Clone Wiki Git repository env: GITEA_REPOSITORY: ${{ gitea.repository }} GITEA_SERVER_URL: ${{ gitea.server_url }} run: | set -eu repository_owner=${GITEA_REPOSITORY%%/*} repository_name=${GITEA_REPOSITORY##*/} wiki_name=$(printf '%s' "$repository_name" | tr '[:upper:]' '[:lower:]') wiki_url="${GITEA_SERVER_URL%/}/${repository_owner}/${wiki_name}.wiki.git" git clone -- "$wiki_url" wiki - name: Generate and verify Gitea Wiki pages run: | python3 source/scripts/docs/generate-wiki.py --output wiki python3 source/scripts/docs/generate-wiki.py --check --output wiki - name: Publish changed Wiki pages working-directory: wiki env: GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} run: | set -eu git config user.name "openUF documentation bot" git config user.email "actions@openuf.invalid" git add -- Home.md Developer-Guide.md Call-Graph.md Runtime-Flow.md _Sidebar.md if git diff --cached --quiet; then echo "Gitea Wiki is already current" exit 0 fi git commit -m "docs: update generated developer wiki" basic_auth=$(printf 'x-access-token:%s' "$GITEA_TOKEN" | base64 | tr -d '\n') git -c http.extraHeader="Authorization: Basic $basic_auth" push origin HEAD