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= diff --git a/internal/pkg/engine/engine.go b/internal/pkg/engine/engine.go index e65d162..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,28 +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") - } - - 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 @@ -152,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 @@ -162,6 +154,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 == "" {