aboutsummaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorRaúl Benencia <id@rbenencia.name>2026-06-05 15:41:09 -0300
committerRaul Benencia <46945030+raul-te@users.noreply.github.com>2026-06-05 16:29:33 -0300
commit78cfb30c7903c70f423256f55d7133609f0c2c8e (patch)
tree688ccd0e070f0bef5b0b9490ac0d75e823d02dac /internal
parent3c11829324a7151212d17bacc5d403e6d3a2204a (diff)
Return flag validation errors
Diffstat (limited to 'internal')
-rw-r--r--internal/environment/environment.go8
-rw-r--r--internal/environment/flags.go19
-rw-r--r--internal/environment/flags_test.go14
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()
nihil fit ex nihilo