From 3959bbe3e6c2d9c54a3a99d2f99f965a09dfc2cf Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Tue, 22 Jul 2025 08:17:03 +0200 Subject: [PATCH] refactor: remove all checkErr --- cmd/config_set.go | 53 +++++++++++++++++++++-------------------------- cmd/root.go | 49 +++++++++++++++++++++++++++++-------------- cmd/rule_rm.go | 14 ++++--------- cmd/rules.go | 18 ++++++++++------ cmd/rules_add.go | 14 ++++--------- cmd/utils.go | 10 +++------ 6 files changed, 81 insertions(+), 77 deletions(-) diff --git a/cmd/config_set.go b/cmd/config_set.go index 759e4f56..d6242bd2 100644 --- a/cmd/config_set.go +++ b/cmd/config_set.go @@ -29,66 +29,60 @@ you want to change. Other options will remain unchanged.`, } hasAuth := false - var visitErr error flags.Visit(func(flag *pflag.Flag) { - if visitErr != nil { + if err != nil { return } - var configSetErr error switch flag.Name { case "baseurl": - ser.BaseURL, configSetErr = mustGetString(flags, flag.Name) + ser.BaseURL, err = mustGetString(flags, flag.Name) case "root": - ser.Root, configSetErr = mustGetString(flags, flag.Name) + ser.Root, err = mustGetString(flags, flag.Name) case "socket": - ser.Socket, configSetErr = mustGetString(flags, flag.Name) + ser.Socket, err = mustGetString(flags, flag.Name) case "cert": - ser.TLSCert, configSetErr = mustGetString(flags, flag.Name) + ser.TLSCert, err = mustGetString(flags, flag.Name) case "key": - ser.TLSKey, configSetErr = mustGetString(flags, flag.Name) + ser.TLSKey, err = mustGetString(flags, flag.Name) case "address": - ser.Address, configSetErr = mustGetString(flags, flag.Name) + ser.Address, err = mustGetString(flags, flag.Name) case "port": - ser.Port, configSetErr = mustGetString(flags, flag.Name) + ser.Port, err = mustGetString(flags, flag.Name) case "log": - ser.Log, configSetErr = mustGetString(flags, flag.Name) + ser.Log, err = mustGetString(flags, flag.Name) case "signup": - set.Signup, configSetErr = mustGetBool(flags, flag.Name) + set.Signup, err = mustGetBool(flags, flag.Name) case "auth.method": hasAuth = true case "shell": var shell string - shell, configSetErr = mustGetString(flags, flag.Name) + shell, err = mustGetString(flags, flag.Name) set.Shell = convertCmdStrToCmdArray(shell) case "create-user-dir": - set.CreateUserDir, configSetErr = mustGetBool(flags, flag.Name) + set.CreateUserDir, err = mustGetBool(flags, flag.Name) case "minimum-password-length": - set.MinimumPasswordLength, configSetErr = mustGetUint(flags, flag.Name) + set.MinimumPasswordLength, err = mustGetUint(flags, flag.Name) case "branding.name": - set.Branding.Name, configSetErr = mustGetString(flags, flag.Name) + set.Branding.Name, err = mustGetString(flags, flag.Name) case "branding.color": - set.Branding.Color, configSetErr = mustGetString(flags, flag.Name) + set.Branding.Color, err = mustGetString(flags, flag.Name) case "branding.theme": - set.Branding.Theme, configSetErr = mustGetString(flags, flag.Name) + set.Branding.Theme, err = mustGetString(flags, flag.Name) case "branding.disableExternal": - set.Branding.DisableExternal, configSetErr = mustGetBool(flags, flag.Name) + set.Branding.DisableExternal, err = mustGetBool(flags, flag.Name) case "branding.disableUsedPercentage": - set.Branding.DisableUsedPercentage, configSetErr = mustGetBool(flags, flag.Name) + set.Branding.DisableUsedPercentage, err = mustGetBool(flags, flag.Name) case "branding.files": - set.Branding.Files, configSetErr = mustGetString(flags, flag.Name) + set.Branding.Files, err = mustGetString(flags, flag.Name) case "file-mode": - set.FileMode, configSetErr = mustGetMode(flags, flag.Name) + set.FileMode, err = mustGetMode(flags, flag.Name) case "dir-mode": - set.DirMode, configSetErr = mustGetMode(flags, flag.Name) - } - - if configSetErr != nil { - visitErr = configSetErr + set.DirMode, err = mustGetMode(flags, flag.Name) } }) - if visitErr != nil { - return visitErr + if err != nil { + return err } err = getUserDefaults(flags, &set.Defaults, false) @@ -120,6 +114,7 @@ you want to change. Other options will remain unchanged.`, if err != nil { return err } + return printSettings(ser, set, auther) }, pythonConfig{}), } diff --git a/cmd/root.go b/cmd/root.go index 4e7b1213..286f6343 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -119,7 +119,10 @@ user created with the credentials from options "username" and "password".`, log.Println(cfgFile) if !d.hadDB { - quickSetup(cmd.Flags(), *d) + err := quickSetup(cmd.Flags(), *d) + if err != nil { + return err + } } // build img service @@ -144,7 +147,10 @@ user created with the credentials from options "username" and "password".`, fileCache = diskcache.New(afero.NewOsFs(), cacheDir) } - server := getRunParams(cmd.Flags(), d.store) + server, err := getRunParams(cmd.Flags(), d.store) + if err != nil { + return err + } setupLog(server.Log) root, err := filepath.Abs(server.Root) @@ -251,9 +257,11 @@ user created with the credentials from options "username" and "password".`, } //nolint:gocyclo -func getRunParams(flags *pflag.FlagSet, st *storage.Storage) *settings.Server { +func getRunParams(flags *pflag.FlagSet, st *storage.Storage) (*settings.Server, error) { server, err := st.Settings.GetServer() - checkErr(err) + if err != nil { + return nil, err + } if val, set := getStringParamB(flags, "root"); set { server.Root = val @@ -296,7 +304,7 @@ func getRunParams(flags *pflag.FlagSet, st *storage.Storage) *settings.Server { } if isAddrSet && isSocketSet { - checkErr(errors.New("--socket flag cannot be used with --address, --port, --key nor --cert")) + return nil, errors.New("--socket flag cannot be used with --address, --port, --key nor --cert") } // Do not use saved Socket if address was manually set. @@ -327,7 +335,7 @@ func getRunParams(flags *pflag.FlagSet, st *storage.Storage) *settings.Server { server.TokenExpirationTime = val } - return server + return server, nil } // getBoolParamB returns a parameter as a string and a boolean to tell if it is different from the default @@ -406,7 +414,7 @@ func setupLog(logMethod string) { } } -func quickSetup(flags *pflag.FlagSet, d pythonData) { +func quickSetup(flags *pflag.FlagSet, d pythonData) error { log.Println("Performing quick setup") set := &settings.Settings{ @@ -449,10 +457,14 @@ func quickSetup(flags *pflag.FlagSet, d pythonData) { set.AuthMethod = auth.MethodJSONAuth err = d.store.Auth.Save(&auth.JSONAuth{}) } + if err != nil { + return err + } - checkErr(err) err = d.store.Settings.Save(set) - checkErr(err) + if err != nil { + return err + } ser := &settings.Server{ BaseURL: getStringParam(flags, "baseurl"), @@ -465,7 +477,9 @@ func quickSetup(flags *pflag.FlagSet, d pythonData) { } err = d.store.Settings.SaveServer(ser) - checkErr(err) + if err != nil { + return err + } username := getStringParam(flags, "username") password := getStringParam(flags, "password") @@ -473,11 +487,15 @@ func quickSetup(flags *pflag.FlagSet, d pythonData) { if password == "" { var pwd string pwd, err = users.RandomPwd(set.MinimumPasswordLength) - checkErr(err) + if err != nil { + return err + } log.Printf("User '%s' initialized with randomly generated password: %s\n", username, pwd) password, err = users.ValidateAndHashPwd(pwd, set.MinimumPasswordLength) - checkErr(err) + if err != nil { + return err + } } else { log.Printf("User '%s' initialize wth user-provided password\n", username) } @@ -495,14 +513,15 @@ func quickSetup(flags *pflag.FlagSet, d pythonData) { set.Defaults.Apply(user) user.Perm.Admin = true - err = d.store.Users.Save(user) - checkErr(err) + return d.store.Users.Save(user) } func initConfig() { if cfgFile == "" { home, err := homedir.Dir() - checkErr(err) + if err != nil { + panic(err) + } v.AddConfigPath(".") v.AddConfigPath(home) v.AddConfigPath("/etc/filebrowser/") diff --git a/cmd/rule_rm.go b/cmd/rule_rm.go index 1437fc2f..26e801ae 100644 --- a/cmd/rule_rm.go +++ b/cmd/rule_rm.go @@ -53,20 +53,14 @@ including 'index_end'.`, } } - user := func(u *users.User) { + user := func(u *users.User) error { u.Rules = append(u.Rules[:i], u.Rules[f+1:]...) - err := d.store.Users.Save(u) - if err != nil { - checkErr(err) - } + return d.store.Users.Save(u) } - global := func(s *settings.Settings) { + global := func(s *settings.Settings) error { s.Rules = append(s.Rules[:i], s.Rules[f+1:]...) - err := d.store.Settings.Save(s) - if err != nil { - checkErr(err) - } + return d.store.Settings.Save(s) } return runRules(d.store, cmd, user, global) diff --git a/cmd/rules.go b/cmd/rules.go index ec6afd5d..b3120bbe 100644 --- a/cmd/rules.go +++ b/cmd/rules.go @@ -29,19 +29,22 @@ rules.`, Args: cobra.NoArgs, } -func runRules(st *storage.Storage, cmd *cobra.Command, usersFn func(*users.User), globalFn func(*settings.Settings)) error { +func runRules(st *storage.Storage, cmd *cobra.Command, usersFn func(*users.User) error, globalFn func(*settings.Settings) error) error { id, err := getUserIdentifier(cmd.Flags()) if err != nil { return err } if id != nil { - user, usrErr := st.Users.Get("", id) - if usrErr != nil { - return usrErr + user, err := st.Users.Get("", id) + if err != nil { + return err } if usersFn != nil { - usersFn(user) + err = usersFn(user) + if err != nil { + return err + } } printRules(user.Rules, id) @@ -54,7 +57,10 @@ func runRules(st *storage.Storage, cmd *cobra.Command, usersFn func(*users.User) } if globalFn != nil { - globalFn(s) + err = globalFn(s) + if err != nil { + return err + } } printRules(s.Rules, id) diff --git a/cmd/rules_add.go b/cmd/rules_add.go index 3ec30feb..dae93572 100644 --- a/cmd/rules_add.go +++ b/cmd/rules_add.go @@ -47,20 +47,14 @@ var rulesAddCmd = &cobra.Command{ rule.Path = exp } - user := func(u *users.User) { + user := func(u *users.User) error { u.Rules = append(u.Rules, rule) - err := d.store.Users.Save(u) - if err != nil { - checkErr(err) - } + return d.store.Users.Save(u) } - global := func(s *settings.Settings) { + global := func(s *settings.Settings) error { s.Rules = append(s.Rules, rule) - err := d.store.Settings.Save(s) - if err != nil { - checkErr(err) - } + return d.store.Settings.Save(s) } return runRules(d.store, cmd, user, global) diff --git a/cmd/utils.go b/cmd/utils.go index 3a81ad44..97364ea5 100644 --- a/cmd/utils.go +++ b/cmd/utils.go @@ -23,12 +23,6 @@ import ( const dbPerms = 0640 -func checkErr(err error) { - if err != nil { - log.Fatal(err) - } -} - func returnErr(err error) error { if err != nil { return err @@ -65,7 +59,9 @@ func mustGetUint(flags *pflag.FlagSet, flag string) (uint, error) { func generateKey() []byte { k, err := settings.GenerateKey() - checkErr(err) + if err != nil { + panic(err) + } return k }