From d06f84627ce435393f08d1f9bc25b68308d7d02e Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 14:31:15 +0100 Subject: [PATCH 1/2] abstract ParseConfig to its own scope --- pkg/command/root.go | 83 ++++++++++++++++++++++++--------------------- 1 file changed, 44 insertions(+), 39 deletions(-) diff --git a/pkg/command/root.go b/pkg/command/root.go index 05995a6ca5..f52cf784ec 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -32,45 +32,7 @@ func Execute() error { Flags: flagset.RootWithConfig(cfg), Before: func(c *cli.Context) error { - logger := NewLogger(cfg) - - viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) - viper.SetEnvPrefix("GLAUTH") - viper.AutomaticEnv() - - if c.IsSet("config-file") { - viper.SetConfigFile(c.String("config-file")) - } else { - viper.SetConfigName("glauth") - - viper.AddConfigPath("/etc/ocis") - viper.AddConfigPath("$HOME/.ocis") - viper.AddConfigPath("./config") - } - - if err := viper.ReadInConfig(); err != nil { - switch err.(type) { - case viper.ConfigFileNotFoundError: - logger.Info(). - Msg("Continue without config") - case viper.UnsupportedConfigError: - logger.Fatal(). - Err(err). - Msg("Unsupported config type") - default: - logger.Fatal(). - Err(err). - Msg("Failed to read config") - } - } - - if err := viper.Unmarshal(&cfg); err != nil { - logger.Fatal(). - Err(err). - Msg("Failed to parse config") - } - - return nil + return ParseConfig(c, cfg) }, Commands: []*cli.Command{ @@ -101,3 +63,46 @@ func NewLogger(cfg *config.Config) log.Logger { log.Color(cfg.Log.Color), ) } + +// ParseConfig loads glauth configuration from Viper known paths. +func ParseConfig(c *cli.Context, cfg *config.Config) error { + logger := NewLogger(cfg) + + viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) + viper.SetEnvPrefix("GLAUTH") + viper.AutomaticEnv() + + if c.IsSet("config-file") { + viper.SetConfigFile(c.String("config-file")) + } else { + viper.SetConfigName("glauth") + + viper.AddConfigPath("/etc/ocis") + viper.AddConfigPath("$HOME/.ocis") + viper.AddConfigPath("./config") + } + + if err := viper.ReadInConfig(); err != nil { + switch err.(type) { + case viper.ConfigFileNotFoundError: + logger.Info(). + Msg("Continue without config") + case viper.UnsupportedConfigError: + logger.Fatal(). + Err(err). + Msg("Unsupported config type") + default: + logger.Fatal(). + Err(err). + Msg("Failed to read config") + } + } + + if err := viper.Unmarshal(&cfg); err != nil { + logger.Fatal(). + Err(err). + Msg("Failed to parse config") + } + + return nil +} From c8c66c8b31f708c63e2f5fff97c82ab8c650f863 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 14:31:30 +0100 Subject: [PATCH 2/2] call ParseConfig on server command --- pkg/command/server.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/command/server.go b/pkg/command/server.go index 221e5daf80..cf24ec6c45 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -37,7 +37,7 @@ func Server(cfg *config.Config) *cli.Command { cfg.Backend.Servers = c.StringSlice("backend-server") - return nil + return ParseConfig(c, cfg) }, Action: func(c *cli.Context) error { logger := NewLogger(cfg)