The register at libs/shared/docs/cibg-gaps.mdx had 8 rows for 9 CIBG-GAP EXTENSION markers in code. language-switcher carries a well-formed marker with no matching row, exactly as ADR-C-008 and adr-c-007.md's handoff note flag. Add the row from the component's own marker comment. Also add a small guard to check-tokens.sh (folded into check:tokens, as ADR-C-008 suggests as an optional step): it diffs the marker set in code against the register's rows and fails CI on drift. Verified working with a scratch marker file before removing it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
35 lines
1.6 KiB
Bash
Executable File
35 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# WP-02 token guard: fail if any *.component.ts hardcodes a colour (hex/rgb/hsl)
|
|
# instead of a --rhc-*/--app-* design token. Palette values live ONLY in the
|
|
# styles.scss token bridge (the one exempt file — it IS the bridge).
|
|
#
|
|
# px/rem are deliberately NOT grepped: too many false positives (font sizes,
|
|
# transforms, media queries). Raw border widths are fixed by hand and mapped to
|
|
# --rhc-border-width-*; see docs/backlog/WP-02-check-tokens.md.
|
|
#
|
|
# Escape hatch: put a `token-ok` marker + reason on a line to suppress a justified
|
|
# false positive (a colour word inside a comment or a data-URI). Keep the bar high.
|
|
set -uo pipefail
|
|
|
|
hits=$(grep -rnE '#[0-9a-fA-F]{3,8}\b|rgba?\(|hsla?\(' apps libs --include='*.component.ts' | grep -v 'token-ok' || true)
|
|
if [ -n "$hits" ]; then
|
|
echo "$hits"
|
|
echo 'FAIL: hardcoded colours in components (use --rhc-*/--app-* tokens, or add a `token-ok` marker + reason)'
|
|
exit 1
|
|
fi
|
|
echo 'OK: no hardcoded colours in components'
|
|
|
|
# ADR-C-008 guard: every `// CIBG-GAP EXTENSION:` marker (ADR-0003 §Consequences)
|
|
# must have a row in the register, so the table cannot drift from the code
|
|
# again without CI catching it.
|
|
gap_register='libs/shared/docs/cibg-gaps.mdx'
|
|
markers=$(grep -rl 'CIBG-GAP EXTENSION' apps libs --include='*.component.ts' | xargs -n1 dirname | xargs -n1 basename | sort -u)
|
|
rows=$(grep -oP '^\| `\K[^`]+' "$gap_register" | sort -u)
|
|
missing=$(comm -23 <(echo "$markers") <(echo "$rows"))
|
|
if [ -n "$missing" ]; then
|
|
echo "$missing"
|
|
echo "FAIL: CIBG-GAP EXTENSION marker(s) with no row in $gap_register"
|
|
exit 1
|
|
fi
|
|
echo 'OK: every CIBG-GAP EXTENSION marker has a cibg-gaps.mdx row'
|