From d0987cb9e9805f08f0f7e8a75e18f03dc19482cc Mon Sep 17 00:00:00 2001 From: guiyomu-dev <22749537+guiyomu-dev@users.noreply.github.com> Date: Thu, 29 Jan 2026 07:19:53 +0100 Subject: [PATCH] add aliases validation --- pkg/nip/file_reader.go | 4 ++++ pkg/nip/rule.go | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/pkg/nip/file_reader.go b/pkg/nip/file_reader.go index 151536f..7de3a43 100644 --- a/pkg/nip/file_reader.go +++ b/pkg/nip/file_reader.go @@ -63,6 +63,10 @@ func ParseNIPFile(filePath string) (Rules, error) { return nil, fmt.Errorf("error reading %s file at line %d: %w", filePath, lineNumber, err) } + if err := rule.ValidateStats(); err != nil { + return nil, fmt.Errorf("error validating rule on [%s:%d]: %w", filePath, lineNumber, err) + } + // We evaluate all the rules at startup to ensure no format errors, if there is a format error we will throw it now instead of during runtime _, err = rule.Evaluate(dummyItem) if err != nil { diff --git a/pkg/nip/rule.go b/pkg/nip/rule.go index 02ed810..c754cbd 100644 --- a/pkg/nip/rule.go +++ b/pkg/nip/rule.go @@ -488,6 +488,16 @@ func getRequiredStatsForRule(line string) []string { return statsList } +// ValidateStats checks that all required stats in stage2 are valid aliases. +func (r Rule) ValidateStats() error { + for _, statName := range r.requiredStats { + if _, found := statAliases[statName]; !found { + return fmt.Errorf("property %s is not valid or not supported", statName) + } + } + return nil +} + func evaluateClassSkillsSum(it data.Item) int { // Check all class skills stats totalClassSkills := 0