Merge pull request #166 from alexflint/env-in-error

Put name of environment variable in error message
This commit is contained in:
Alex Flint 2021-10-01 04:44:19 -07:00 committed by GitHub
commit bf32f08247
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 1 deletions

View File

@ -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)

View File

@ -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"`