name: Generate documentation on: push: branches: - main paths: - "docs/manual/**" - "docs/build-manual.py" - "docs/manualtools.py" - "docs/verify-manual.py" - "docs/site/**" jobs: build-docs: runs-on: racknerd-mini steps: - name: Checkout uses: actions/checkout@v4 with: token: ${{ secrets.GITEA_TOKEN }} - name: Install dependencies run: | sudo apt-get update -qq sudo apt-get install -y pandoc python3-yaml - name: Generate concatenated markdown run: python3 docs/build-manual.py --concat -o docs/fish-config.md # Regeneration MUST run before verification: verify-manual.py's # test_concat_roundtrips_original compares a freshly-built concat # against docs/fish-config.md on disk. Before this step ran, that # file was still the stale pre-push copy, so any ordinary edit under # docs/manual/** failed the round-trip check before anything was # regenerated. Do not reorder this back — verification still gates # pandoc and the auto-commit below, it just no longer requires a # contributor to hand-sync the generated file before pushing. - name: Verify manual integrity run: python3 docs/verify-manual.py - name: Compile man page run: | pandoc --standalone \ --from markdown \ --to man \ docs/fish-config.md \ -o docs/fish-config.1 - name: Set up Node uses: actions/setup-node@v4 with: node-version: "24" - name: Build documentation site run: | python3 docs/build-manual.py --site cd docs/site npm ci npx astro build - name: Deploy to Cloudflare Pages env: CLOUDFLARE_API_TOKEN: ${{ secrets.CF_API_TOKEN }} CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }} run: | cd docs/site npx --yes wrangler pages deploy dist/ \ --project-name=fish-config-docs \ --branch=main - name: Commit generated docs run: | git config user.name "Gitea Actions" git config user.email "actions@gitea" git add docs/fish-config.md docs/fish-config.1 git diff --cached --quiet && echo "No changes to commit" && exit 0 git commit -m "chore(docs): regenerate manual and man page" git push