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)
|
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
|
// PrintDefaults prints, to standard error unless configured
|
||||||
// otherwise, the default values of all defined flags in the set.
|
// otherwise, the default values of all defined flags in the set.
|
||||||
func (fs *FlagSet) PrintDefaults() {
|
func (fs *FlagSet) PrintDefaults() {
|
||||||
|
@ -537,7 +551,6 @@ func (fs *FlagSet) PrintDefaults() {
|
||||||
}
|
}
|
||||||
|
|
||||||
fs.VisitAll(func(flag *Flag) {
|
fs.VisitAll(func(flag *Flag) {
|
||||||
format := " -%s=%s"
|
|
||||||
names := []string{}
|
names := []string{}
|
||||||
for _, name := range flag.Names {
|
for _, name := range flag.Names {
|
||||||
if name[0] != '#' {
|
if name[0] != '#' {
|
||||||
|
@ -551,7 +564,13 @@ func (fs *FlagSet) PrintDefaults() {
|
||||||
val = homedir.GetShortcutString() + val[len(home):]
|
val = homedir.GetShortcutString() + val[len(home):]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if isZeroValue(val) {
|
||||||
|
format := " -%s"
|
||||||
|
fmt.Fprintf(writer, format, strings.Join(names, ", -"))
|
||||||
|
} else {
|
||||||
|
format := " -%s=%s"
|
||||||
fmt.Fprintf(writer, format, strings.Join(names, ", -"), val)
|
fmt.Fprintf(writer, format, strings.Join(names, ", -"), val)
|
||||||
|
}
|
||||||
for i, line := range strings.Split(flag.Usage, "\n") {
|
for i, line := range strings.Split(flag.Usage, "\n") {
|
||||||
if i != 0 {
|
if i != 0 {
|
||||||
line = " " + line
|
line = " " + line
|
||||||
|
|
Loading…
Reference in a new issue