feat: implement rule-based field validation#10
Merged
Merged
Conversation
- Moving render logic to separate module. - Splitting schema validation logic into multiple methods.
Add a conditional rule system that enforces constraints on commit fields after all values are collected. Rules consist of a condition (Eq, Neq, In, Exists, and logical combinators) and one or more actions (Require, Forbid, Equals). Violations are reported together before committing.
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.
feat: implement rule-based field validation
Adds a conditional rule system that enforces constraints on commit fields
after all values are collected.
What's new
Rule engine — Rules consist of a condition and one or more actions.
Conditions support eq, neq, in, exists, and logical combinators (and, or,
not). Actions support require, forbid, and equals, each with an optional
custom message. Violations are collected and reported together with
human-readable messages that include the triggering condition.
Rule validation — Config validation now checks that all fields
referenced in rule conditions and actions exist in the schema, catching
mistakes at load time.
Config refactor — Render logic extracted into render.rs, rules into
rules.rs, and shared tests consolidated into tests.rs. schema.rs is now
focused on data types and structural validation only.
Example