From 06745d8d2f4ffd1d8aa1b852807122fa53e14286 Mon Sep 17 00:00:00 2001 From: gotbadger Date: Mon, 8 Jan 2024 12:40:05 +0000 Subject: [PATCH] fix: use of fatal and double error output --- cmd/bearer/main.go | 14 ++++---------- internal/commands/process/settings/rules.go | 9 +++++---- internal/commands/process/settings/settings.go | 12 +++++++----- internal/util/ignore/ignore.go | 3 +++ 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/cmd/bearer/main.go b/cmd/bearer/main.go index 2362fc57d..76767d431 100644 --- a/cmd/bearer/main.go +++ b/cmd/bearer/main.go @@ -1,22 +1,16 @@ package main import ( - "github.com/bearer/bearer/cmd/bearer/build" + "os" + "github.com/bearer/bearer/cmd/bearer/build" "github.com/bearer/bearer/internal/commands" - "github.com/bearer/bearer/internal/util/output" ) func main() { - if err := run(); err != nil { - output.Fatal(err.Error()) - } -} - -func run() error { app := commands.NewApp(build.Version, build.CommitSHA) if err := app.Execute(); err != nil { - return err + // error messages are printed by the framework + os.Exit(1) } - return nil } diff --git a/internal/commands/process/settings/rules.go b/internal/commands/process/settings/rules.go index bab3ed4a3..ded66f460 100644 --- a/internal/commands/process/settings/rules.go +++ b/internal/commands/process/settings/rules.go @@ -95,7 +95,7 @@ func loadRuleDefinitionsFromRemote( definitions map[string]RuleDefinition, options flagtypes.RuleOptions, versionMeta *version_check.VersionMeta, -) { +) (err error) { if options.DisableDefaultRules { return } @@ -111,11 +111,12 @@ func loadRuleDefinitionsFromRemote( urls = append(urls, value) } - err := LoadRuleDefinitionsFromUrls(definitions, urls) + err = LoadRuleDefinitionsFromUrls(definitions, urls) if err != nil { - output.Fatal(fmt.Sprintf("Error loading rules: %s", err)) - // sysexit + err = fmt.Errorf("loading rules failed: %s", err) } + + return } func loadRuleDefinitionsFromDir(definitions map[string]RuleDefinition, dir fs.FS) error { diff --git a/internal/commands/process/settings/settings.go b/internal/commands/process/settings/settings.go index aa91a2a1f..2f383a76a 100644 --- a/internal/commands/process/settings/settings.go +++ b/internal/commands/process/settings/settings.go @@ -14,7 +14,6 @@ import ( flagtypes "github.com/bearer/bearer/internal/flag/types" "github.com/bearer/bearer/internal/util/ignore" ignoretypes "github.com/bearer/bearer/internal/util/ignore/types" - "github.com/bearer/bearer/internal/util/output" "github.com/bearer/bearer/internal/util/rego" "github.com/bearer/bearer/internal/version_check" @@ -320,7 +319,10 @@ func defaultWorkerOptions() WorkerOptions { } func FromOptions(opts flagtypes.Options, versionMeta *version_check.VersionMeta) (Config, error) { - policies := DefaultPolicies() + policies, err := DefaultPolicies() + if err != nil { + return Config{}, err + } workerOptions := defaultWorkerOptions() result, err := loadRules( opts.ExternalRuleDir, @@ -417,20 +419,20 @@ func (filter *PatternFilter) UnmarshalYAML(unmarshal func(interface{}) error) er return nil } -func DefaultPolicies() map[string]*Policy { +func DefaultPolicies() (map[string]*Policy, error) { policies := make(map[string]*Policy) var policy []*Policy err := yaml.Unmarshal(defaultPolicies, &policy) if err != nil { - output.Fatal(fmt.Sprintf("failed to unmarshal policy file %s", err)) + return nil, fmt.Errorf("failed to unmarshal policy file %s", err) } for _, policy := range policy { policies[policy.Type] = policy } - return policies + return policies, nil } func ProcessorRegoModuleText(processorName string) (string, error) { diff --git a/internal/util/ignore/ignore.go b/internal/util/ignore/ignore.go index 8d0a9d5b5..15585a37d 100644 --- a/internal/util/ignore/ignore.go +++ b/internal/util/ignore/ignore.go @@ -43,6 +43,9 @@ func GetIgnoredFingerprints(filePath string, target *string) (ignoredFingerprint } err = json.Unmarshal(content, &ignoredFingerprints) + if err != nil { + err = fmt.Errorf("ignore file '%s' is invalid - %s", ignoreFilePath, err) + } return ignoredFingerprints, ignoreFilePath, true, err }