summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Flint <[email protected]>2021-10-01 04:44:19 -0700
committerGitHub <[email protected]>2021-10-01 04:44:19 -0700
commitbf32f082479c88da7bcf4c4765a70e3a357d9dfc (patch)
treea80604bf757e487192fb55b38bc2648ba250dc72
parenta4afd6a8490903fdc93b319be0d54bd2039c3f08 (diff)
parentb47d6e3da6e34607f7f06b3acfceb74f62d5a6a6 (diff)
Merge pull request #166 from alexflint/env-in-error
Put name of environment variable in error message
-rw-r--r--parse.go6
-rw-r--r--parse_test.go8
2 files changed, 13 insertions, 1 deletions
diff --git a/parse.go b/parse.go
index 1ebb2a4..7588dfb 100644
--- a/parse.go
+++ b/parse.go
@@ -653,7 +653,11 @@ func (p *Parser) process(args []string) error {
}
if spec.required {
- return fmt.Errorf("%s is required", name)
+ msg := fmt.Sprintf("%s is required", name)
+ if spec.env != "" {
+ msg += " (or environment variable " + spec.env + ")"
+ }
+ return errors.New(msg)
}
if spec.defaultVal != "" {
err := scalar.ParseValue(p.val(spec.dest), spec.defaultVal)
diff --git a/parse_test.go b/parse_test.go
index 284e386..2d0ef7a 100644
--- a/parse_test.go
+++ b/parse_test.go
@@ -203,6 +203,14 @@ func TestRequired(t *testing.T) {
require.Error(t, err, "--foo is required")
}
+func TestRequiredWithEnv(t *testing.T) {
+ var args struct {
+ Foo string `arg:"required,env:FOO"`
+ }
+ err := parse("", &args)
+ require.Error(t, err, "--foo is required (or environment variable FOO)")
+}
+
func TestShortFlag(t *testing.T) {
var args struct {
Foo string `arg:"-f"`