Bundled fix wave for six findings from the sub-category-granularity whole-branch review: - config-settings: reset in_subcat on Tab/Shift-Tab so up/down keep routing to cur_row instead of freezing on the Sponge/Paths pages after a drill-down - verify-manual: _parsed_components() now delegates to generate_component_registry.collect_components() instead of a lossy dict.update() merge, closing a taxonomy-check blind spot on identity collisions - verify-manual: add test_committed_registry_matches_headers to catch the committed registry drifting from current # COMPONENT headers - build-docs workflow: trigger on conf.d/** and config.fish edits, not just functions/** - __config_settings_draw_subcat: show (Universal)/(Session) in the drill-down title so the persistence scope is visible before toggling - __config_settings_draw / config-settings: mention the Enter sub-category drill-down in the on-screen hint and --help text - generate_component_registry: send the "wrote ..." progress line to stderr so it no longer corrupts --concat's stdout output
85 lines
2.6 KiB
YAML
85 lines
2.6 KiB
YAML
name: Generate documentation
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
paths:
|
|
- "docs/manual/**"
|
|
- "docs/build-manual.py"
|
|
- "docs/manualtools.py"
|
|
- "docs/verify-manual.py"
|
|
- "docs/site/**"
|
|
- "functions/**"
|
|
- "conf.d/**"
|
|
- "config.fish"
|
|
workflow_dispatch:
|
|
|
|
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 \
|
|
--commit-dirty=true
|
|
|
|
- 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
|