From d7313ba8da3dc1a3dd9d1c71932aeb815aaa8a8e Mon Sep 17 00:00:00 2001 From: Tony Meehan Date: Fri, 16 May 2025 10:14:20 -0500 Subject: [PATCH 1/3] Add fix for missing IDs --- internal/pkg/engine/engine.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/internal/pkg/engine/engine.go b/internal/pkg/engine/engine.go index e65d162..7e23d70 100644 --- a/internal/pkg/engine/engine.go +++ b/internal/pkg/engine/engine.go @@ -125,6 +125,17 @@ func compileRulePath(cf compiler.RuntimeI, rp utils.RulePathT) (compiler.ObjsT, log.Info().Str("id", rule.Metadata.Id).Str("cre", rule.Cre.Id).Msg("Rule") } + // Add missing IDs + for i := range rs.Rules { + var r = &rs.Rules[i] + if r.Metadata.Id == "" { + r.Metadata.Id = tree.Nodes[i].Metadata.RuleId + } + if r.Metadata.Hash == "" { + r.Metadata.Hash = tree.Nodes[i].Metadata.RuleHash + } + } + nodeObjs, err = compileRuleTree(cf, tree) if err != nil { return nil, nil, pqerr.WithFile(err, rp.Path) @@ -162,6 +173,7 @@ func compileRule(cf compiler.RuntimeI, data []byte) (compiler.ObjsT, *parser.Rul log.Info().Str("id", rule.Metadata.Id).Str("cre", rule.Cre.Id).Msg("Rule") } + // Add missing IDs for i := range rules.Rules { var r = &rules.Rules[i] if r.Metadata.Id == "" { From 2291986fb50e91a5e31614ed11373f7853e2d62e Mon Sep 17 00:00:00 2001 From: Tony Meehan Date: Fri, 16 May 2025 10:17:41 -0500 Subject: [PATCH 2/3] Refactor --- internal/pkg/engine/engine.go | 43 ++++++++++------------------------- 1 file changed, 12 insertions(+), 31 deletions(-) diff --git a/internal/pkg/engine/engine.go b/internal/pkg/engine/engine.go index 7e23d70..1347923 100644 --- a/internal/pkg/engine/engine.go +++ b/internal/pkg/engine/engine.go @@ -20,7 +20,6 @@ import ( "github.com/prequel-dev/prequel-compiler/pkg/compiler" "github.com/prequel-dev/prequel-compiler/pkg/datasrc" "github.com/prequel-dev/prequel-compiler/pkg/parser" - "github.com/prequel-dev/prequel-compiler/pkg/pqerr" "github.com/prequel-dev/prequel-compiler/pkg/schema" "github.com/prequel-dev/prequel-logmatch/pkg/entry" lm "github.com/prequel-dev/prequel-logmatch/pkg/match" @@ -93,8 +92,6 @@ func compileRuleTree(cf compiler.RuntimeI, tree *parser.TreeT) (compiler.ObjsT, func compileRulePath(cf compiler.RuntimeI, rp utils.RulePathT) (compiler.ObjsT, *parser.RulesT, error) { var ( rs *parser.RulesT - tree *parser.TreeT - nodeObjs compiler.ObjsT rdrOpts = make([]utils.ReaderOptT, 0) parseOpts = make([]parser.ParseOptT, 0) err error @@ -116,39 +113,12 @@ func compileRulePath(cf compiler.RuntimeI, rp utils.RulePathT) (compiler.ObjsT, return nil, nil, err } - if tree, err = parser.ParseRules(rs, parseOpts); err != nil { - return nil, nil, err - } - - log.Info().Int("cres", len(rs.Rules)).Msg("Parsed rules") - for _, rule := range rs.Rules { - log.Info().Str("id", rule.Metadata.Id).Str("cre", rule.Cre.Id).Msg("Rule") - } - - // Add missing IDs - for i := range rs.Rules { - var r = &rs.Rules[i] - if r.Metadata.Id == "" { - r.Metadata.Id = tree.Nodes[i].Metadata.RuleId - } - if r.Metadata.Hash == "" { - r.Metadata.Hash = tree.Nodes[i].Metadata.RuleHash - } - } - - nodeObjs, err = compileRuleTree(cf, tree) - if err != nil { - return nil, nil, pqerr.WithFile(err, rp.Path) - } - - return nodeObjs, rs, nil + return doCompileRule(cf, rs, parseOpts) } func compileRule(cf compiler.RuntimeI, data []byte) (compiler.ObjsT, *parser.RulesT, error) { var ( rules *parser.RulesT - tree *parser.TreeT - nodeObjs compiler.ObjsT rdrOpts = make([]utils.ReaderOptT, 0) parseOpts = make([]parser.ParseOptT, 0) err error @@ -163,6 +133,17 @@ func compileRule(cf compiler.RuntimeI, data []byte) (compiler.ObjsT, *parser.Rul return nil, nil, err } + return doCompileRule(cf, rules, parseOpts) +} + +func doCompileRule(cf compiler.RuntimeI, rules *parser.RulesT, parseOpts []parser.ParseOptT) (compiler.ObjsT, *parser.RulesT, error) { + + var ( + tree *parser.TreeT + nodeObjs compiler.ObjsT + err error + ) + if tree, err = parser.ParseRules(rules, parseOpts); err != nil { log.Error().Err(err).Msg("Failed to parse rules") return nil, nil, err From e55ab0b84391592f2931c5edfc070546d56dec5a Mon Sep 17 00:00:00 2001 From: Tony Meehan Date: Fri, 16 May 2025 12:55:34 -0500 Subject: [PATCH 3/3] Update go mod --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 785a041..c83aef4 100644 --- a/go.mod +++ b/go.mod @@ -30,7 +30,7 @@ require ( require ( github.com/cqroot/prompt v0.9.4 github.com/fatih/color v1.18.0 - github.com/prequel-dev/prequel-compiler v0.0.11 + github.com/prequel-dev/prequel-compiler v0.0.14 github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.20.1 gopkg.in/yaml.v2 v2.4.0 diff --git a/go.sum b/go.sum index 34f521f..cbf8c68 100644 --- a/go.sum +++ b/go.sum @@ -214,8 +214,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.2.3 h1:NP0eAhjcjImqslEwo/1hq7gpajME0fTLTezBKDqfXqo= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= -github.com/prequel-dev/prequel-compiler v0.0.11 h1:SC9XYv41TiPqQvIXbgKPBmlH5XSSQVqlKgkqwjBF9Vw= -github.com/prequel-dev/prequel-compiler v0.0.11/go.mod h1:PBk0LDu2xSMVC+Qq0/1C5XXls3KyO5rIYGI4wcoLScE= +github.com/prequel-dev/prequel-compiler v0.0.14 h1:ZeynQysKhfQspY4KPPEiYVvbsCHCfWUEXk5pvEnAZ9Y= +github.com/prequel-dev/prequel-compiler v0.0.14/go.mod h1:PBk0LDu2xSMVC+Qq0/1C5XXls3KyO5rIYGI4wcoLScE= github.com/prequel-dev/prequel-logmatch v0.0.13 h1:cPKs1FbhfDyPevGkEOVEud+HZT7r385a+ZumWvBlmQw= github.com/prequel-dev/prequel-logmatch v0.0.13/go.mod h1:Dpfd/79s8vMCmIdmNQ5kC8WAvw/XjOd2z6wEIe3Lkck= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=