Remove defaults for flags/options that expect no value
- isZeroValue function from upstream go - covers booleans, strings and numbers - change integration to reflect new behavior - resolves #9406 Signed-off-by: Morgan Bauer <mbauer@us.ibm.com>
This commit is contained in:
parent
5edb94d724
commit
47a077d28c
1 changed files with 21 additions and 2 deletions
|
@ -520,6 +520,20 @@ func Set(name, value string) error {
|
|||
return CommandLine.Set(name, value)
|
||||
}
|
||||
|
||||
// isZeroValue guesses whether the string represents the zero
|
||||
// value for a flag. It is not accurate but in practice works OK.
|
||||
func isZeroValue(value string) bool {
|
||||
switch value {
|
||||
case "false":
|
||||
return true
|
||||
case "":
|
||||
return true
|
||||
case "0":
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// PrintDefaults prints, to standard error unless configured
|
||||
// otherwise, the default values of all defined flags in the set.
|
||||
func (fs *FlagSet) PrintDefaults() {
|
||||
|
@ -537,7 +551,6 @@ func (fs *FlagSet) PrintDefaults() {
|
|||
}
|
||||
|
||||
fs.VisitAll(func(flag *Flag) {
|
||||
format := " -%s=%s"
|
||||
names := []string{}
|
||||
for _, name := range flag.Names {
|
||||
if name[0] != '#' {
|
||||
|
@ -551,7 +564,13 @@ func (fs *FlagSet) PrintDefaults() {
|
|||
val = homedir.GetShortcutString() + val[len(home):]
|
||||
}
|
||||
|
||||
fmt.Fprintf(writer, format, strings.Join(names, ", -"), val)
|
||||
if isZeroValue(val) {
|
||||
format := " -%s"
|
||||
fmt.Fprintf(writer, format, strings.Join(names, ", -"))
|
||||
} else {
|
||||
format := " -%s=%s"
|
||||
fmt.Fprintf(writer, format, strings.Join(names, ", -"), val)
|
||||
}
|
||||
for i, line := range strings.Split(flag.Usage, "\n") {
|
||||
if i != 0 {
|
||||
line = " " + line
|
||||
|
|
Loading…
Reference in a new issue