feat(07-01): add RawRule, LoadResult, validation, auto-freq to config package
- Add RawRule struct with Port *uint16, Protocol, Class fields - Add LoadResult struct with FreqCfgs, UserRules, ConfigPath fields - Change Load() signature to return LoadResult instead of bare map - Add validateRules: checks protocol required, class required, valid protocols - Add convertRules: converts RawRule slices to classify.Rule slices - Add autoAssignFreq: FNV-32a deterministic Hz in [1200-2350] range - Add addAutoFreqEntries: creates FreqConfig for new class names, skips built-ins - Reorder ops: addAutoFreqEntries before merge so sounds overrides apply to user classes - Update main.go call site to use LoadResult.FreqCfgs - Update all 8 existing tests to use LoadResult return type - Add 13 new tests covering rule parsing, validation, auto-freq, and LoadResult
This commit is contained in:
@@ -84,10 +84,11 @@ func run(cmd *cobra.Command, args []string) error {
|
||||
}
|
||||
|
||||
// Load config (CFG-01 through CFG-05, D-11: fail fast before capture)
|
||||
freqCfgs, err := config.Load(configPath)
|
||||
loadResult, err := config.Load(configPath)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
freqCfgs := loadResult.FreqCfgs
|
||||
|
||||
// Resolve output path
|
||||
if outputPath == "" {
|
||||
|
||||
Reference in New Issue
Block a user