diff options
| author | Raúl Benencia <id@rbenencia.name> | 2026-06-05 15:41:09 -0300 |
|---|---|---|
| committer | Raul Benencia <46945030+raul-te@users.noreply.github.com> | 2026-06-05 16:29:33 -0300 |
| commit | 78cfb30c7903c70f423256f55d7133609f0c2c8e (patch) | |
| tree | 688ccd0e070f0bef5b0b9490ac0d75e823d02dac /internal | |
| parent | 3c11829324a7151212d17bacc5d403e6d3a2204a (diff) | |
Return flag validation errors
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/environment/environment.go | 8 | ||||
| -rw-r--r-- | internal/environment/flags.go | 19 | ||||
| -rw-r--r-- | internal/environment/flags_test.go | 14 |
3 files changed, 29 insertions, 12 deletions
diff --git a/internal/environment/environment.go b/internal/environment/environment.go index d0712d5..86d32a5 100644 --- a/internal/environment/environment.go +++ b/internal/environment/environment.go @@ -63,7 +63,13 @@ func New() *Environment { fmt.Println(err) os.Exit(1) } - env.validateFlags(flags) + if err := env.validateFlags(); err != nil { + fmt.Println(err) + fmt.Println("\nAvailable parameters:") + flags.PrintDefaults() + fmt.Println("\nParameters can be specified as environment variables, arguments or in a config file.") + os.Exit(1) + } if env.Debug { env.Logger = log.AllowDebug(env.Logger) diff --git a/internal/environment/flags.go b/internal/environment/flags.go index 09c243e..2ffda31 100644 --- a/internal/environment/flags.go +++ b/internal/environment/flags.go @@ -15,6 +15,7 @@ package environment import ( + "errors" "flag" "fmt" "os" @@ -201,23 +202,19 @@ func (env *Environment) setConfigValue(key, value string) error { return nil } -func (env *Environment) validateFlags(flags *flag.FlagSet) { - error := false +func (env *Environment) validateFlags() error { + var messages []string if env.DataDir == "" { - fmt.Println("[*] You must specify the data-dir parameter") - error = true + messages = append(messages, "[*] You must specify the data-dir parameter") } if env.StaticDir == "" { - fmt.Println("[*] You must specify the data-dir parameter") - error = true + messages = append(messages, "[*] You must specify the data-dir parameter") } - if error { - fmt.Println("\nAvailable parameters:") - flags.PrintDefaults() - fmt.Println("\nParameters can be specified as environment variables, arguments or in a config file.") - os.Exit(1) + if len(messages) > 0 { + return errors.New(strings.Join(messages, "\n")) } + return nil } diff --git a/internal/environment/flags_test.go b/internal/environment/flags_test.go index 0cab282..2c2750d 100644 --- a/internal/environment/flags_test.go +++ b/internal/environment/flags_test.go @@ -122,6 +122,20 @@ func TestSetFlagsReturnsConfigErrors(t *testing.T) { } } +func TestValidateFlagsReturnsError(t *testing.T) { + env := defaultEnvironment() + env.DataDir = "data" + env.StaticDir = "web" + if err := env.validateFlags(); err != nil { + t.Fatal(err) + } + + env.StaticDir = "" + if err := env.validateFlags(); err == nil { + t.Fatal("Expected error") + } +} + func writeConfig(t *testing.T, name string, contents string) string { t.Helper() |
