From 2971a4a27f793a17f8612a4216e3c8218df153fa Mon Sep 17 00:00:00 2001 From: Christoph Hartmann Date: Wed, 20 Sep 2023 12:01:37 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20use=20system=20path=20on=20defau?= =?UTF-8?q?lt=20when=20root=20user=20is=20used?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/cnquery/cmd/root.go | 7 +++++++ providers/providers.go | 10 +++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/apps/cnquery/cmd/root.go b/apps/cnquery/cmd/root.go index 5289ceb30..2a84af491 100644 --- a/apps/cnquery/cmd/root.go +++ b/apps/cnquery/cmd/root.go @@ -81,6 +81,13 @@ func init() { logger.CliCompactLogger(logger.LogOutputWriter) zerolog.SetGlobalLevel(zerolog.InfoLevel) + // TODO harmonize with initLogger, which is called later and attached to the command + // here we set the log level only by environment variable + envLevel, ok := logger.GetEnvLogLevel() + if ok { + logger.Set(envLevel) + } + config.DefaultConfigFile = "mondoo.yml" rootCmd.PersistentFlags().BoolP("verbose", "v", false, "Enable verbose output") diff --git a/providers/providers.go b/providers/providers.go index 1fc4b1a7f..a80b6ca9c 100644 --- a/providers/providers.go +++ b/providers/providers.go @@ -28,6 +28,8 @@ import ( var ( SystemPath string HomePath string + // this is the default path for providers, it's either system or home path, if the user is root the system path is used + DefaultPath string // CachedProviders contains all providers that have been loaded the last time // ListActive or ListAll have been called CachedProviders []*Provider @@ -35,8 +37,10 @@ var ( func init() { SystemPath = config.SystemDataPath("providers") + DefaultPath = SystemPath if os.Geteuid() != 0 { HomePath, _ = config.HomePath("providers") + DefaultPath = HomePath } } @@ -198,6 +202,7 @@ func installVersion(name string, version string) (*Provider, error) { url = strings.ReplaceAll(url, "{OS}", runtime.GOOS) url = strings.ReplaceAll(url, "{ARCH}", runtime.GOARCH) + log.Debug().Str("url", url).Msg("installing provider from URL") res, err := http.Get(url) if err != nil { log.Debug().Str("url", url).Msg("failed to install form URL (get request)") @@ -205,7 +210,7 @@ func installVersion(name string, version string) (*Provider, error) { } installed, err := InstallIO(res.Body, InstallConf{ - Dst: HomePath, + Dst: DefaultPath, }) if err != nil { log.Debug().Str("url", url).Msg("failed to install form URL (download)") @@ -298,7 +303,9 @@ func InstallIO(reader io.ReadCloser, conf InstallConf) ([]*Provider, error) { if conf.Dst == "" { conf.Dst = HomePath } + if !config.ProbeDir(conf.Dst) { + log.Debug().Str("path", conf.Dst).Msg("creating providers directory") if err := os.MkdirAll(conf.Dst, 0o755); err != nil { return nil, errors.New("failed to create " + conf.Dst) } @@ -307,6 +314,7 @@ func InstallIO(reader io.ReadCloser, conf InstallConf) ([]*Provider, error) { } } + log.Debug().Msg("create temp directory to unpack providers") tmpdir, err := os.MkdirTemp(conf.Dst, ".providers-unpack") if err != nil { return nil, errors.Wrap(err, "failed to create temporary directory to unpack files")