From 7dfa81f489a4a053762fad36bfce9e5fc8c8d22a Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Tue, 8 Jan 2019 20:41:43 +0100 Subject: [PATCH] style: rename mustGetStringViperFlag and getStringViperFlag, use getParamB to read noauth --- cmd/root.go | 95 ++++++++++++++++++++++++-------------------------- cmd/upgrade.go | 2 +- cmd/utils.go | 2 +- 3 files changed, 48 insertions(+), 51 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index a600caca..01e08bb3 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -54,33 +54,6 @@ func addServerFlags(flags *pflag.FlagSet) { flags.StringP("baseurl", "b", "", "base url") } -// NOTE: we could simply bind the flags to viper and use IsSet. -// Although there is a bug on Viper that always returns true on IsSet -// if a flag is binded. Our alternative way is to manually check -// the flag and then the value from env/config/gotten by viper. -// https://github.com/spf13/viper/pull/331 -func getStringViperFlag(flags *pflag.FlagSet, key string) (string, bool) { - value, _ := flags.GetString(key) - - // If set on Flags, use it. - if flags.Changed(key) { - return value, true - } - - // If set through viper (env, config), return it. - if v.IsSet(key) { - return v.GetString(key), true - } - - // Otherwise use default value on flags. - return value, false -} - -func mustGetStringViperFlag(flags *pflag.FlagSet, key string) string { - val, _ := getStringViperFlag(flags, key) - return val -} - var rootCmd = &cobra.Command{ Use: "filebrowser", Version: version.Version, @@ -158,35 +131,64 @@ user created with the credentials from options "username" and "password".`, }, pythonConfig{allowNoDB: true}), } +// getParamB returns a parameter as a string and a boolean to tell if it is different from the default +// +// NOTE: we could simply bind the flags to viper and use IsSet. +// Although there is a bug on Viper that always returns true on IsSet +// if a flag is binded. Our alternative way is to manually check +// the flag and then the value from env/config/gotten by viper. +// https://github.com/spf13/viper/pull/331 +func getParamB(flags *pflag.FlagSet, key string) (string, bool) { + value, _ := flags.GetString(key) + + // If set on Flags, use it. + if flags.Changed(key) { + return value, true + } + + // If set through viper (env, config), return it. + if v.IsSet(key) { + return v.GetString(key), true + } + + // Otherwise use default value on flags. + return value, false +} + +func getParam(flags *pflag.FlagSet, key string) string { + val, _ := getParamB(flags, key) + return val +} + func getServerWithViper(flags *pflag.FlagSet, st *storage.Storage) *settings.Server { server, err := st.Settings.GetServer() checkErr(err) - if val, set := getStringViperFlag(flags, "root"); set { + if val, set := getParamB(flags, "root"); set { server.Root = val } - if val, set := getStringViperFlag(flags, "baseurl"); set { + if val, set := getParamB(flags, "baseurl"); set { server.BaseURL = val } - if val, set := getStringViperFlag(flags, "address"); set { + if val, set := getParamB(flags, "address"); set { server.Address = val } - if val, set := getStringViperFlag(flags, "port"); set { + if val, set := getParamB(flags, "port"); set { server.Port = val } - if val, set := getStringViperFlag(flags, "log"); set { + if val, set := getParamB(flags, "log"); set { server.Log = val } - if val, set := getStringViperFlag(flags, "key"); set { + if val, set := getParamB(flags, "key"); set { server.TLSKey = val } - if val, set := getStringViperFlag(flags, "cert"); set { + if val, set := getParamB(flags, "cert"); set { server.TLSCert = val } @@ -231,12 +233,7 @@ func quickSetup(flags *pflag.FlagSet, d pythonData) { }, } - noauth, err := flags.GetBool("noauth") - checkErr(err) - - if !flags.Changed("noauth") && v.IsSet("noauth") { - noauth = v.GetBool("noauth") - } + _, noauth := getParamB(flags, "noauth") if noauth { set.AuthMethod = auth.MethodNoAuth @@ -251,20 +248,20 @@ func quickSetup(flags *pflag.FlagSet, d pythonData) { checkErr(err) ser := &settings.Server{ - BaseURL: mustGetStringViperFlag(flags, "baseurl"), - Port: mustGetStringViperFlag(flags, "port"), - Log: mustGetStringViperFlag(flags, "log"), - TLSKey: mustGetStringViperFlag(flags, "key"), - TLSCert: mustGetStringViperFlag(flags, "cert"), - Address: mustGetStringViperFlag(flags, "address"), - Root: mustGetStringViperFlag(flags, "root"), + BaseURL: getParam(flags, "baseurl"), + Port: getParam(flags, "port"), + Log: getParam(flags, "log"), + TLSKey: getParam(flags, "key"), + TLSCert: getParam(flags, "cert"), + Address: getParam(flags, "address"), + Root: getParam(flags, "root"), } err = d.store.Settings.SaveServer(ser) checkErr(err) - username := mustGetStringViperFlag(flags, "username") - password := mustGetStringViperFlag(flags, "password") + username := getParam(flags, "username") + password := getParam(flags, "password") if password == "" { password, err = users.HashPwd("admin") diff --git a/cmd/upgrade.go b/cmd/upgrade.go index 0e3dd290..d46d4fe9 100644 --- a/cmd/upgrade.go +++ b/cmd/upgrade.go @@ -25,7 +25,7 @@ this version.`, flags := cmd.Flags() oldDB := mustGetString(flags, "old.database") oldConf := mustGetString(flags, "old.config") - err := importer.Import(oldDB, oldConf, mustGetStringViperFlag(flags, "database")) + err := importer.Import(oldDB, oldConf, getParam(flags, "database")) checkErr(err) }, } diff --git a/cmd/utils.go b/cmd/utils.go index bd741998..b52fcf5a 100644 --- a/cmd/utils.go +++ b/cmd/utils.go @@ -66,7 +66,7 @@ func python(fn pythonFunc, cfg pythonConfig) cobraFunc { return func(cmd *cobra.Command, args []string) { data := pythonData{hadDB: true} - path := mustGetStringViperFlag(cmd.Flags(), "database") + path := getParam(cmd.Flags(), "database") _, err := os.Stat(path) if os.IsNotExist(err) {