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
}