## Summary
Replaces the Python `propscheck.py` validation script with TypeScript
code that:
- Uses a testable validator module (`lib/properties-validator.ts`)
- Has comprehensive unit tests (71 tests in
`test/properties-validation-tests.ts`)
- Integrates with the existing property loading infrastructure
- Runs as part of the normal test suite
## Changes
- **New validator module** (`lib/properties-validator.ts`):
- Raw file validation: duplicate keys, empty list elements, typos,
suspicious paths
- Orphan detection: compilers, groups, formatters, tools, libraries
- Cross-file duplicate compiler ID detection
- Disabled allowlist support (`# Disabled: id1 id2`)
- Invalid property format detection (leverages `parseProperties()` with
new `collectErrors` option)
- Missing compilers list detection for language files
- **Property library enhancement** (`lib/properties.ts`):
- Added `collectErrors` option to `parseProperties()` for structured
error collection
- **New npm script**: `npm run test:props` for quick property validation
- Set `CHECK_LOCAL_PROPS=true` to include `.local.properties` files
- **Updated references**:
- CI workflow no longer calls propscheck.py
- Pre-commit hook uses `npm run test:props`
- CE Properties Wizard uses the new validation
- **Removed**: `etc/scripts/util/propscheck.py` and `propschecktest.py`
## Test plan
- [x] All 71 unit tests pass
- [x] Integration tests validate real config files
- [x] `npm run test:props` works standalone
- [x] CE Properties Wizard validation works
- [x] CI passes
🤖 Generated with [Claude Code](https://claude.ai/code)
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Applies to local config and fix existing issues.
By defaults, local and defaults are not checked for suspicious path (exe
not starting with /opt/compiler-explorer). This can be forced with the
--check-suspicious-in-local-prop.
Signed-off-by: Marc Poulhiès <dkm@kataplop.net>
Catch invalid lines (i.e. not a comment and not a prop).
Also refine the PROP_RE so that the 'key' can't have a space (this could
be made more correct by allowing space around '=', but we don't have
any, so....)
Signed-off-by: Marc Poulhiès <dkm@kataplop.net>
Checks that paths in .amazon.properties are starting with
/opt/compiler-explorer/.
Also rename cppx_blue default config file (was .default. instead of .defaults.).
Signed-off-by: Marc Poulhiès <dkm@kataplop.net>
- Renames orphancompiler.py script to propscheck.py, the name fits better
- Fixes Go props to make them easier to maintain
- Alphabetically sorts some listings in the code
- Adds tests to the props checker script (No idea how to integrate those so it's manual for now)
- Adds 2 missing limit cases for Motd filtering
* Use webpack to autogenerate the files.
That way, we always generate them consistently, be it through
`make` or building for prod. This fixes the `make` issue, and also
means we've further unified the way we build and run with `make`
vs prod.
Unfortunately this doesn't work for `make dev`; which sees the
handlebars content only. That's probably ok though, I think.
* build the release in-place in out/dist
* run the tsc compiler on the code so everything is pre-transpiled
* serve the various generated html snippets uniformly from the web page so they come from one place.
* Group some files to their own folders
In etc/scripts/, added disasms/, docenizers/, and util/ folders
In lib/, added mapfiles/, and parsers/ folders (+moved google.js to
shortener)
In static/, added widgets/ folder
Added cypress folder to .gitignore
* Address Matt's PR reviews
* Move new Pane renaming to folder