diff --git a/cautils/scaninfo.go b/cautils/scaninfo.go index 9bef29b3..7f21ff3d 100644 --- a/cautils/scaninfo.go +++ b/cautils/scaninfo.go @@ -53,6 +53,10 @@ func (bpf *BoolPtrFlag) Set(val string) error { return nil } +type RootInfo struct { + Logger string // logger level + CacheDir string // cached dir +} type ScanInfo struct { Getters PolicyIdentifier []reporthandling.PolicyIdentifier @@ -75,8 +79,6 @@ type ScanInfo struct { HostSensorYamlPath string // Path to hostsensor file Local bool // Do not submit results Account string // account ID - Logger string // logger level - CacheDir string // cached dir KubeContext string // context name FrameworkScan bool // false if scanning control ScanAll bool // true if scan all frameworks diff --git a/cautils/versioncheck.go b/cautils/versioncheck.go index b53bced7..83385df1 100644 --- a/cautils/versioncheck.go +++ b/cautils/versioncheck.go @@ -98,7 +98,7 @@ func (v *VersionCheckHandler) CheckLatestVersion(versionData *VersionCheckReques if latestVersion.ClientUpdate != "" { if BuildNumber != "" && BuildNumber < latestVersion.ClientUpdate { - logger.L().Warning(warningMessage(latestVersion.Client, latestVersion.ClientUpdate)) + logger.L().Warning(warningMessage(latestVersion.ClientUpdate)) } } @@ -133,6 +133,6 @@ func (v *VersionCheckHandler) getLatestVersion(versionData *VersionCheckRequest) return vResp, nil } -func warningMessage(kind, release string) string { - return fmt.Sprintf("'%s' is not updated to the latest release: '%s'", kind, release) +func warningMessage(release string) string { + return fmt.Sprintf("current version '%s' is not updated to the latest release: '%s'", BuildNumber, release) } diff --git a/clihandler/cmd/root.go b/clihandler/cmd/root.go index 8fc1d615..8c3dff7c 100644 --- a/clihandler/cmd/root.go +++ b/clihandler/cmd/root.go @@ -1,7 +1,6 @@ package cmd import ( - "flag" "fmt" "os" "strings" @@ -14,6 +13,7 @@ import ( ) var armoBEURLs = "" +var rootInfo cautils.RootInfo const envFlagUsage = "Send report results to specific URL. Format:,,.\n\t\tExample:report.armo.cloud,api.armo.cloud,portal.armo.cloud" @@ -44,14 +44,13 @@ func Execute() { } func init() { + cobra.OnInitialize(initLogger, initLoggerLevel, initEnvironment, initCacheDir) - flag.CommandLine.StringVar(&armoBEURLs, "environment", "", envFlagUsage) rootCmd.PersistentFlags().StringVar(&armoBEURLs, "environment", "", envFlagUsage) rootCmd.PersistentFlags().MarkHidden("environment") - rootCmd.PersistentFlags().StringVarP(&scanInfo.Logger, "logger", "l", helpers.InfoLevel.String(), fmt.Sprintf("Logger level. Supported: %s [$KS_LOGGER]", strings.Join(helpers.SupportedLevels(), "/"))) - rootCmd.PersistentFlags().StringVar(&scanInfo.CacheDir, "cache-dir", getter.DefaultLocalStore, "Cache directory [$KS_CACHE_DIR]") - flag.Parse() + rootCmd.PersistentFlags().StringVarP(&rootInfo.Logger, "logger", "l", helpers.InfoLevel.String(), fmt.Sprintf("Logger level. Supported: %s [$KS_LOGGER]", strings.Join(helpers.SupportedLevels(), "/"))) + rootCmd.PersistentFlags().StringVar(&rootInfo.CacheDir, "cache-dir", getter.DefaultLocalStore, "Cache directory [$KS_CACHE_DIR]") } func initLogger() { @@ -60,18 +59,18 @@ func initLogger() { } } func initLoggerLevel() { - if scanInfo.Logger != helpers.InfoLevel.String() { + if rootInfo.Logger != helpers.InfoLevel.String() { } else if l := os.Getenv("KS_LOGGER"); l != "" { - scanInfo.Logger = l + rootInfo.Logger = l } - if err := logger.L().SetLevel(scanInfo.Logger); err != nil { + if err := logger.L().SetLevel(rootInfo.Logger); err != nil { logger.L().Fatal(fmt.Sprintf("supported levels: %s", strings.Join(helpers.SupportedLevels(), "/")), helpers.Error(err)) } } func initCacheDir() { - if scanInfo.CacheDir != getter.DefaultLocalStore { - getter.DefaultLocalStore = scanInfo.CacheDir + if rootInfo.CacheDir != getter.DefaultLocalStore { + getter.DefaultLocalStore = rootInfo.CacheDir } else if cacheDir := os.Getenv("KS_CACHE_DIR"); cacheDir != "" { getter.DefaultLocalStore = cacheDir } else {