From 57d90d7fcfd981fa6b9b237a79ba16984297364a Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 12:54:31 +0100 Subject: [PATCH 1/4] move vipoer config parsing to its scope --- pkg/command/root.go | 82 ++++++++++++++++++++++++--------------------- 1 file changed, 43 insertions(+), 39 deletions(-) diff --git a/pkg/command/root.go b/pkg/command/root.go index 31d904baa9..2908ce020e 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("PHOENIX") - viper.AutomaticEnv() - - if c.IsSet("config-file") { - viper.SetConfigFile(c.String("config-file")) - } else { - viper.SetConfigName("phoenix") - - 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,45 @@ func NewLogger(cfg *config.Config) log.Logger { log.Color(cfg.Log.Color), ) } + +func ParseConfig(c *cli.Context, cfg *config.Config) error { + logger := NewLogger(cfg) + + viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) + viper.SetEnvPrefix("PHOENIX") + viper.AutomaticEnv() + + if c.IsSet("config-file") { + viper.SetConfigFile(c.String("config-file")) + } else { + viper.SetConfigName("phoenix") + + 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 f737dd6aa676aa61beb31bd6f8c58af6c8dfe345 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 12:54:46 +0100 Subject: [PATCH 2/4] parse configuration on before hook 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 43abf1427c..e80fd0e9e7 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -38,7 +38,7 @@ func Server(cfg *config.Config) *cli.Command { cfg.Phoenix.Config.Apps = c.StringSlice("web-config-app") - return nil + return ParseConfig(c, cfg) }, Action: func(c *cli.Context) error { logger := NewLogger(cfg) From 961da9b8f0daebe7e4ac9f5233ea613c85b3f430 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 13:02:28 +0100 Subject: [PATCH 3/4] comment exported ParseConfig func --- pkg/command/root.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/command/root.go b/pkg/command/root.go index 2908ce020e..a18026386c 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -64,6 +64,7 @@ func NewLogger(cfg *config.Config) log.Logger { ) } +// ParseConfig loads proxy configuration from Viper known paths. func ParseConfig(c *cli.Context, cfg *config.Config) error { logger := NewLogger(cfg) From e967b7b71bdc72a1b8bad0d5a4fab96c85029854 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 13:16:46 +0100 Subject: [PATCH 4/4] add changelog --- changelog/unreleased/config.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 changelog/unreleased/config.md diff --git a/changelog/unreleased/config.md b/changelog/unreleased/config.md new file mode 100644 index 0000000000..f6afe0dc5d --- /dev/null +++ b/changelog/unreleased/config.md @@ -0,0 +1,5 @@ +Enhancement: Configuration + +Extensions should be responsible of configuring themselves. We use Viper for config loading from default paths. Environment variables **WILL** take precedence over config files. + +https://github.com/owncloud/ocis-phoenix/pull/57