Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
98b423c28This file is pinned to the selected release. Download the original to open it in your design tool.
name: Console pages in sync
# The console pages are authored as firmware/patternflow/console/*.html and
# spliced into the PROGMEM headers by firmware/toolchain/console_pages.py.
#
# That arrangement has exactly one way to go wrong: someone edits the .h
# directly. Nothing complains, the device ships their change — and the next
# `console_pages.py build` silently overwrites it with the older HTML. The
# work disappears with no error anywhere.
#
# So this checks that every header still matches its HTML - and that the
# gzip twin `build` lays under each literal (theme_index.h and fflate_js.h
# carry one too, with no HTML of their own) still decompresses to it.
on:
pull_request:
paths:
- "firmware/patternflow/console/**"
- "firmware/patternflow/src/*_index.h"
- "firmware/patternflow/src/fflate_js.h"
- "firmware/patternflow/features/**/*_index.h"
- "firmware/toolchain/console_pages.py"
- "firmware/toolchain/build_audio_in_page.py"
- "tools/patternflow-audio-extension/**"
- ".github/workflows/console-sync.yml"
push:
branches: [main]
paths:
- "firmware/patternflow/console/**"
- "firmware/patternflow/src/*_index.h"
- "firmware/patternflow/src/fflate_js.h"
- "firmware/patternflow/features/**/*_index.h"
- "firmware/toolchain/console_pages.py"
- "firmware/toolchain/build_audio_in_page.py"
- "tools/patternflow-audio-extension/**"
concurrency:
group: console-sync-${{ github.ref }}
cancel-in-progress: true
permissions: {}
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Headers match console/*.html
run: python firmware/toolchain/console_pages.py check
# audio-in.html is itself generated, from the browser extension's mapping
# editor. The step above proves the header matches the page; this proves
# the page matches the editor it was assembled from.
- name: audio-in.html matches the extension's editor
run: python firmware/toolchain/build_audio_in_page.py --check