Repository navigation
feat(config): versioned project configuration for v0.8.0 - #29
Merged
Merged
Conversation
Add PasWeave.Config with a strict pasweave.json loader: version 1 schema, unknown-key and type rejection, validated theme/comments/targets/defines/ coverage values, and relative-path rules that reject absolute paths and parent traversal escaping the configuration directory. Options are exposed through TProjectConfig with presence flags where empty is meaningful. Covered by tests/PasWeave.ConfigTests.pas with a full valid document, a minimal document, and 22 rejection cases.
Load --config before option parsing so explicit CLI values override the file, with any CLI instance of a repeatable option replacing the configured list. Add --no-recursive and --visibility=public|all, include the config file in the input fingerprint, record the effective configuration in api-model.json and the fingerprint, and report the configuration file in the build summary. Config failures exit with code 2. The visibility policy lives in the model, is applied through PasWeave.Render.Support, and defaults to the public API so existing output is unchanged. CLI and config tests cover config-only builds, precedence, config-relative output, model exposure, strict rejection, and rendering private members under visibility=all.
Document the pasweave.json schema, precedence, path rules, list-replacement semantics, visibility policy, reproducibility fields, validation errors, and usage examples. Link the guide from the README documentation table and the docs index, and record the new model fields and changelog entries.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements the v0.8.0 milestone: commit one
pasweave.json, rebuild with--config=pasweave.json, and reproduce the build from model metadata.Changes
Versioned configuration format (
PasWeave.Config, 24 unit tests)pasweave.json,"version": 1, strictly declarative — no scripts, plugins, or remote references.Precedence and CLI integration
--configis pre-scanned and applied before option parsing, so explicit CLI values override the file (defaults < config < CLI).--include,--exclude,--unit-path,--include-path,--define,--package-path) replaces the configured list;--no-recursiveand--visibility=public|alloverride config booleans/policies.Visibility policy
visibility: "public"(default) preserves existing behavior exactly;"all"documents private and strict-private declarations, with coverage and the symbol index following the same population.PasWeave.Render.Support(policy lives in the model), so all renderers and validation stay consistent.Reproducibility
api-model.jsonrecordsconfigurationSourceand the effective normalizedconfigurationtext (the same text hashed into the fingerprint).Docs
docs/project-configuration.md(schema, precedence, path rules, examples), linked from the README and docs index;generated-output.mdandCHANGELOG.mdupdated;--helplists the new options.Verification
make testpasses: CLI suite (config-only build, config-relative output, precedence, model exposure, unknown-key/missing-file/invalid-visibility rejection, private rendering undervisibility=all) plus the functional suites and 24 config unit cases.scripts/check-docs-links.ps1passes (63 files).Roadmap
All v0.8.0 exit criteria are met. Release prep (version bump to 0.8.0, release note, tag) is a separate follow-up after this merges.