diff options
Diffstat (limited to 'flag.go')
| -rw-r--r-- | flag.go | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -82,6 +82,12 @@ func InitFlagSet(fs *flag.FlagSet, env []string, cfg map[string]string, args []s return } + if f.DefValue != f.Value.String() { + if _, ok := f.Value.(MutableFlagValue); !ok { + return + } + } + var next string if val, found := environ[strings.ToUpper(strings.ReplaceAll(f.Name, "-", "_"))]; found { next = val @@ -102,6 +108,13 @@ func InitFlagSet(fs *flag.FlagSet, env []string, cfg map[string]string, args []s return err } +// MutableFlagValue is used to signal whether it is safe to set a flag +// to another value if it has already been set before, i.e. if its +// current value (as a string) is the same as its default value. +type MutableFlagValue interface { + MutableFlagValue() +} + // ParseString returns the string passed with no error set. func ParseString(s string) (string, error) { return s, nil |
