Skip to content

Commit

Permalink
Fix:(issue_1689) Have consistent behavior for default text in man and…
Browse files Browse the repository at this point in the history
… markdown and cli
  • Loading branch information
dearchap committed Nov 29, 2023
1 parent 488e77c commit e2301c8
Show file tree
Hide file tree
Showing 10 changed files with 89 additions and 30 deletions.
1 change: 1 addition & 0 deletions cmd/urfave-cli-genflags/generated.gotmpl
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ type {{.TypeName}} struct {
EnvVars []string

defaultValue {{if .ValuePointer}}*{{end}}{{.GoType}}
defaultValueSet bool
{{ range .StructFields}}
{{.Name}} {{if .Pointer}}*{{end}}{{.Type}}
{{end -}}
Expand Down
6 changes: 5 additions & 1 deletion flag_duration.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,10 @@ func (f *DurationFlag) GetDefaultText() string {
if f.DefaultText != "" {
return f.DefaultText
}
return f.defaultValue.String()
if f.defaultValueSet {
return f.defaultValue.String()
}
return f.Value.String()
}

// GetEnvVars returns the env vars for this flag
Expand All @@ -44,6 +47,7 @@ func (f *DurationFlag) GetEnvVars() []string {
func (f *DurationFlag) Apply(set *flag.FlagSet) error {
// set default value so that environment wont be able to overwrite it
f.defaultValue = f.Value
f.defaultValueSet = true

if val, source, found := flagFromEnvOrFile(f.EnvVars, f.FilePath); found {
if val != "" {
Expand Down
6 changes: 5 additions & 1 deletion flag_int.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,10 @@ func (f *IntFlag) GetDefaultText() string {
if f.DefaultText != "" {
return f.DefaultText
}
return fmt.Sprintf("%d", f.defaultValue)
if f.defaultValueSet {
return fmt.Sprintf("%d", f.defaultValue)
}
return fmt.Sprintf("%d", f.Value)
}

// GetEnvVars returns the env vars for this flag
Expand All @@ -44,6 +47,7 @@ func (f *IntFlag) GetEnvVars() []string {
func (f *IntFlag) Apply(set *flag.FlagSet) error {
// set default value so that environment wont be able to overwrite it
f.defaultValue = f.Value
f.defaultValueSet = true

if val, source, found := flagFromEnvOrFile(f.EnvVars, f.FilePath); found {
if val != "" {
Expand Down
6 changes: 5 additions & 1 deletion flag_int64.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,10 @@ func (f *Int64Flag) GetDefaultText() string {
if f.DefaultText != "" {
return f.DefaultText
}
return fmt.Sprintf("%d", f.defaultValue)
if f.defaultValueSet {
return fmt.Sprintf("%d", f.defaultValue)
}
return fmt.Sprintf("%d", f.Value)
}

// GetEnvVars returns the env vars for this flag
Expand All @@ -44,6 +47,7 @@ func (f *Int64Flag) GetEnvVars() []string {
func (f *Int64Flag) Apply(set *flag.FlagSet) error {
// set default value so that environment wont be able to overwrite it
f.defaultValue = f.Value
f.defaultValueSet = true

if val, source, found := flagFromEnvOrFile(f.EnvVars, f.FilePath); found {
if val != "" {
Expand Down
13 changes: 10 additions & 3 deletions flag_path.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,16 @@ func (f *PathFlag) GetDefaultText() string {
if f.DefaultText != "" {
return f.DefaultText
}
if f.defaultValue == "" {
return f.defaultValue
if f.defaultValueSet {
if f.defaultValue == "" {
return f.defaultValue
}
return fmt.Sprintf("%q", f.defaultValue)
}
if f.Value == "" {
return f.Value
}
return fmt.Sprintf("%q", f.defaultValue)
return fmt.Sprintf("%q", f.Value)
}

// GetEnvVars returns the env vars for this flag
Expand All @@ -48,6 +54,7 @@ func (f *PathFlag) GetEnvVars() []string {
func (f *PathFlag) Apply(set *flag.FlagSet) error {
// set default value so that environment wont be able to overwrite it
f.defaultValue = f.Value
f.defaultValueSet = true

if val, _, found := flagFromEnvOrFile(f.EnvVars, f.FilePath); found {
f.Value = val
Expand Down
13 changes: 10 additions & 3 deletions flag_string.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,16 @@ func (f *StringFlag) GetDefaultText() string {
if f.DefaultText != "" {
return f.DefaultText
}
if f.defaultValue == "" {
return f.defaultValue
if f.defaultValueSet {
if f.defaultValue == "" {
return f.defaultValue
}
return fmt.Sprintf("%q", f.defaultValue)
}
if f.Value == "" {
return f.Value
}
return fmt.Sprintf("%q", f.defaultValue)
return fmt.Sprintf("%q", f.Value)
}

// GetEnvVars returns the env vars for this flag
Expand All @@ -46,6 +52,7 @@ func (f *StringFlag) GetEnvVars() []string {
func (f *StringFlag) Apply(set *flag.FlagSet) error {
// set default value so that environment wont be able to overwrite it
f.defaultValue = f.Value
f.defaultValueSet = true

if val, _, found := flagFromEnvOrFile(f.EnvVars, f.FilePath); found {
f.Value = val
Expand Down
11 changes: 9 additions & 2 deletions flag_timestamp.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,14 @@ func (f *TimestampFlag) GetDefaultText() string {
if f.DefaultText != "" {
return f.DefaultText
}
if f.defaultValue != nil && f.defaultValue.timestamp != nil {
return f.defaultValue.timestamp.String()
if f.defaultValueSet {
if f.defaultValue != nil && f.defaultValue.timestamp != nil {
return f.defaultValue.timestamp.String()
}
} else {
if f.Value != nil && f.Value.timestamp != nil {
return f.Value.timestamp.String()
}
}

return ""
Expand All @@ -144,6 +150,7 @@ func (f *TimestampFlag) Apply(set *flag.FlagSet) error {
f.Value.SetLocation(f.Timezone)

f.defaultValue = f.Value.clone()
f.defaultValueSet = true

if val, source, found := flagFromEnvOrFile(f.EnvVars, f.FilePath); found {
if err := f.Value.Set(val); err != nil {
Expand Down
6 changes: 5 additions & 1 deletion flag_uint.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ func (f *UintFlag) GetCategory() string {
func (f *UintFlag) Apply(set *flag.FlagSet) error {
// set default value so that environment wont be able to overwrite it
f.defaultValue = f.Value
f.defaultValueSet = true

if val, source, found := flagFromEnvOrFile(f.EnvVars, f.FilePath); found {
if val != "" {
Expand Down Expand Up @@ -69,7 +70,10 @@ func (f *UintFlag) GetDefaultText() string {
if f.DefaultText != "" {
return f.DefaultText
}
return fmt.Sprintf("%d", f.defaultValue)
if f.defaultValueSet {
return fmt.Sprintf("%d", f.defaultValue)
}
return fmt.Sprintf("%d", f.Value)
}

// GetEnvVars returns the env vars for this flag
Expand Down
6 changes: 5 additions & 1 deletion flag_uint64.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ func (f *Uint64Flag) GetCategory() string {
func (f *Uint64Flag) Apply(set *flag.FlagSet) error {
// set default value so that environment wont be able to overwrite it
f.defaultValue = f.Value
f.defaultValueSet = true

if val, source, found := flagFromEnvOrFile(f.EnvVars, f.FilePath); found {
if val != "" {
Expand Down Expand Up @@ -69,7 +70,10 @@ func (f *Uint64Flag) GetDefaultText() string {
if f.DefaultText != "" {
return f.DefaultText
}
return fmt.Sprintf("%d", f.defaultValue)
if f.defaultValueSet {
return fmt.Sprintf("%d", f.defaultValue)
}
return fmt.Sprintf("%d", f.Value)
}

// GetEnvVars returns the env vars for this flag
Expand Down
51 changes: 34 additions & 17 deletions zz_generated.flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ type Float64SliceFlag struct {
Aliases []string
EnvVars []string

defaultValue *Float64Slice
defaultValue *Float64Slice
defaultValueSet bool

separator separatorSpec

Expand Down Expand Up @@ -69,7 +70,8 @@ type GenericFlag struct {
Aliases []string
EnvVars []string

defaultValue Generic
defaultValue Generic
defaultValueSet bool

TakesFile bool

Expand Down Expand Up @@ -120,7 +122,8 @@ type Int64SliceFlag struct {
Aliases []string
EnvVars []string

defaultValue *Int64Slice
defaultValue *Int64Slice
defaultValueSet bool

separator separatorSpec

Expand Down Expand Up @@ -166,7 +169,8 @@ type IntSliceFlag struct {
Aliases []string
EnvVars []string

defaultValue *IntSlice
defaultValue *IntSlice
defaultValueSet bool

separator separatorSpec

Expand Down Expand Up @@ -212,7 +216,8 @@ type PathFlag struct {
Aliases []string
EnvVars []string

defaultValue Path
defaultValue Path
defaultValueSet bool

TakesFile bool

Expand Down Expand Up @@ -263,7 +268,8 @@ type StringSliceFlag struct {
Aliases []string
EnvVars []string

defaultValue *StringSlice
defaultValue *StringSlice
defaultValueSet bool

separator separatorSpec

Expand Down Expand Up @@ -313,7 +319,8 @@ type TimestampFlag struct {
Aliases []string
EnvVars []string

defaultValue *Timestamp
defaultValue *Timestamp
defaultValueSet bool

Layout string

Expand Down Expand Up @@ -366,7 +373,8 @@ type Uint64SliceFlag struct {
Aliases []string
EnvVars []string

defaultValue *Uint64Slice
defaultValue *Uint64Slice
defaultValueSet bool

separator separatorSpec

Expand Down Expand Up @@ -412,7 +420,8 @@ type UintSliceFlag struct {
Aliases []string
EnvVars []string

defaultValue *UintSlice
defaultValue *UintSlice
defaultValueSet bool

separator separatorSpec

Expand Down Expand Up @@ -458,7 +467,8 @@ type BoolFlag struct {
Aliases []string
EnvVars []string

defaultValue bool
defaultValue bool
defaultValueSet bool

Count *int

Expand Down Expand Up @@ -511,7 +521,8 @@ type Float64Flag struct {
Aliases []string
EnvVars []string

defaultValue float64
defaultValue float64
defaultValueSet bool

Action func(*Context, float64) error
}
Expand Down Expand Up @@ -560,7 +571,8 @@ type IntFlag struct {
Aliases []string
EnvVars []string

defaultValue int
defaultValue int
defaultValueSet bool

Base int

Expand Down Expand Up @@ -611,7 +623,8 @@ type Int64Flag struct {
Aliases []string
EnvVars []string

defaultValue int64
defaultValue int64
defaultValueSet bool

Base int

Expand Down Expand Up @@ -662,7 +675,8 @@ type StringFlag struct {
Aliases []string
EnvVars []string

defaultValue string
defaultValue string
defaultValueSet bool

TakesFile bool

Expand Down Expand Up @@ -713,7 +727,8 @@ type DurationFlag struct {
Aliases []string
EnvVars []string

defaultValue time.Duration
defaultValue time.Duration
defaultValueSet bool

Action func(*Context, time.Duration) error
}
Expand Down Expand Up @@ -762,7 +777,8 @@ type UintFlag struct {
Aliases []string
EnvVars []string

defaultValue uint
defaultValue uint
defaultValueSet bool

Base int

Expand Down Expand Up @@ -813,7 +829,8 @@ type Uint64Flag struct {
Aliases []string
EnvVars []string

defaultValue uint64
defaultValue uint64
defaultValueSet bool

Base int

Expand Down

0 comments on commit e2301c8

Please sign in to comment.