Merge pull request #1508 from fjl/slice-flag-stringer
Call FlagStringer in String() method of slice flags
This commit is contained in:
commit
3c5c3a4aa9
29
flag.go
29
flag.go
@ -129,6 +129,14 @@ type DocGenerationFlag interface {
|
|||||||
GetEnvVars() []string
|
GetEnvVars() []string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DocGenerationSliceFlag extends DocGenerationFlag for slice-based flags.
|
||||||
|
type DocGenerationSliceFlag interface {
|
||||||
|
DocGenerationFlag
|
||||||
|
|
||||||
|
// IsSliceFlag returns true for flags that can be given multiple times.
|
||||||
|
IsSliceFlag() bool
|
||||||
|
}
|
||||||
|
|
||||||
// VisibleFlag is an interface that allows to check if a flag is visible
|
// VisibleFlag is an interface that allows to check if a flag is visible
|
||||||
type VisibleFlag interface {
|
type VisibleFlag interface {
|
||||||
Flag
|
Flag
|
||||||
@ -325,24 +333,13 @@ func stringifyFlag(f Flag) string {
|
|||||||
|
|
||||||
usageWithDefault := strings.TrimSpace(usage + defaultValueString)
|
usageWithDefault := strings.TrimSpace(usage + defaultValueString)
|
||||||
|
|
||||||
return withEnvHint(df.GetEnvVars(),
|
pn := prefixedNames(df.Names(), placeholder)
|
||||||
fmt.Sprintf("%s\t%s", prefixedNames(df.Names(), placeholder), usageWithDefault))
|
sliceFlag, ok := f.(DocGenerationSliceFlag)
|
||||||
|
if ok && sliceFlag.IsSliceFlag() {
|
||||||
|
pn = pn + " [ " + pn + " ]"
|
||||||
}
|
}
|
||||||
|
|
||||||
func stringifySliceFlag(usage string, names, defaultVals []string) string {
|
return withEnvHint(df.GetEnvVars(), fmt.Sprintf("%s\t%s", pn, usageWithDefault))
|
||||||
placeholder, usage := unquoteUsage(usage)
|
|
||||||
if placeholder == "" {
|
|
||||||
placeholder = defaultPlaceholder
|
|
||||||
}
|
|
||||||
|
|
||||||
defaultVal := ""
|
|
||||||
if len(defaultVals) > 0 {
|
|
||||||
defaultVal = fmt.Sprintf(formatDefault("%s"), strings.Join(defaultVals, ", "))
|
|
||||||
}
|
|
||||||
|
|
||||||
usageWithDefault := strings.TrimSpace(fmt.Sprintf("%s%s", usage, defaultVal))
|
|
||||||
pn := prefixedNames(names, placeholder)
|
|
||||||
return fmt.Sprintf("%s [ %s ]\t%s", pn, pn, usageWithDefault)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func hasFlag(flags []Flag, fl Flag) bool {
|
func hasFlag(flags []Flag, fl Flag) bool {
|
||||||
|
@ -83,7 +83,7 @@ func (f *Float64Slice) Get() interface{} {
|
|||||||
// String returns a readable representation of this value
|
// String returns a readable representation of this value
|
||||||
// (for usage defaults)
|
// (for usage defaults)
|
||||||
func (f *Float64SliceFlag) String() string {
|
func (f *Float64SliceFlag) String() string {
|
||||||
return withEnvHint(f.GetEnvVars(), f.stringify())
|
return FlagStringer(f)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TakesValue returns true if the flag takes a value, otherwise false
|
// TakesValue returns true if the flag takes a value, otherwise false
|
||||||
@ -104,10 +104,13 @@ func (f *Float64SliceFlag) GetCategory() string {
|
|||||||
// GetValue returns the flags value as string representation and an empty
|
// GetValue returns the flags value as string representation and an empty
|
||||||
// string if the flag takes no value at all.
|
// string if the flag takes no value at all.
|
||||||
func (f *Float64SliceFlag) GetValue() string {
|
func (f *Float64SliceFlag) GetValue() string {
|
||||||
if f.Value != nil {
|
var defaultVals []string
|
||||||
return f.Value.String()
|
if f.Value != nil && len(f.Value.Value()) > 0 {
|
||||||
|
for _, i := range f.Value.Value() {
|
||||||
|
defaultVals = append(defaultVals, strings.TrimRight(strings.TrimRight(fmt.Sprintf("%f", i), "0"), "."))
|
||||||
}
|
}
|
||||||
return ""
|
}
|
||||||
|
return strings.Join(defaultVals, ", ")
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetDefaultText returns the default text for this flag
|
// GetDefaultText returns the default text for this flag
|
||||||
@ -123,6 +126,11 @@ func (f *Float64SliceFlag) GetEnvVars() []string {
|
|||||||
return f.EnvVars
|
return f.EnvVars
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsSliceFlag implements DocGenerationSliceFlag.
|
||||||
|
func (f *Float64SliceFlag) IsSliceFlag() bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// Apply populates the flag given the flag set and environment
|
// Apply populates the flag given the flag set and environment
|
||||||
func (f *Float64SliceFlag) Apply(set *flag.FlagSet) error {
|
func (f *Float64SliceFlag) Apply(set *flag.FlagSet) error {
|
||||||
// apply any default
|
// apply any default
|
||||||
@ -169,18 +177,6 @@ func (f *Float64SliceFlag) Get(ctx *Context) []float64 {
|
|||||||
return ctx.Float64Slice(f.Name)
|
return ctx.Float64Slice(f.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *Float64SliceFlag) stringify() string {
|
|
||||||
var defaultVals []string
|
|
||||||
|
|
||||||
if f.Value != nil && len(f.Value.Value()) > 0 {
|
|
||||||
for _, i := range f.Value.Value() {
|
|
||||||
defaultVals = append(defaultVals, strings.TrimRight(strings.TrimRight(fmt.Sprintf("%f", i), "0"), "."))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return stringifySliceFlag(f.Usage, f.Names(), defaultVals)
|
|
||||||
}
|
|
||||||
|
|
||||||
// RunAction executes flag action if set
|
// RunAction executes flag action if set
|
||||||
func (f *Float64SliceFlag) RunAction(c *Context) error {
|
func (f *Float64SliceFlag) RunAction(c *Context) error {
|
||||||
if f.Action != nil {
|
if f.Action != nil {
|
||||||
|
@ -84,7 +84,7 @@ func (i *Int64Slice) Get() interface{} {
|
|||||||
// String returns a readable representation of this value
|
// String returns a readable representation of this value
|
||||||
// (for usage defaults)
|
// (for usage defaults)
|
||||||
func (f *Int64SliceFlag) String() string {
|
func (f *Int64SliceFlag) String() string {
|
||||||
return withEnvHint(f.GetEnvVars(), f.stringify())
|
return FlagStringer(f)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TakesValue returns true of the flag takes a value, otherwise false
|
// TakesValue returns true of the flag takes a value, otherwise false
|
||||||
@ -105,10 +105,13 @@ func (f *Int64SliceFlag) GetCategory() string {
|
|||||||
// GetValue returns the flags value as string representation and an empty
|
// GetValue returns the flags value as string representation and an empty
|
||||||
// string if the flag takes no value at all.
|
// string if the flag takes no value at all.
|
||||||
func (f *Int64SliceFlag) GetValue() string {
|
func (f *Int64SliceFlag) GetValue() string {
|
||||||
if f.Value != nil {
|
var defaultVals []string
|
||||||
return f.Value.String()
|
if f.Value != nil && len(f.Value.Value()) > 0 {
|
||||||
|
for _, i := range f.Value.Value() {
|
||||||
|
defaultVals = append(defaultVals, strconv.FormatInt(i, 10))
|
||||||
}
|
}
|
||||||
return ""
|
}
|
||||||
|
return strings.Join(defaultVals, ", ")
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetDefaultText returns the default text for this flag
|
// GetDefaultText returns the default text for this flag
|
||||||
@ -124,6 +127,11 @@ func (f *Int64SliceFlag) GetEnvVars() []string {
|
|||||||
return f.EnvVars
|
return f.EnvVars
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsSliceFlag implements DocGenerationSliceFlag.
|
||||||
|
func (f *Int64SliceFlag) IsSliceFlag() bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// Apply populates the flag given the flag set and environment
|
// Apply populates the flag given the flag set and environment
|
||||||
func (f *Int64SliceFlag) Apply(set *flag.FlagSet) error {
|
func (f *Int64SliceFlag) Apply(set *flag.FlagSet) error {
|
||||||
// apply any default
|
// apply any default
|
||||||
@ -168,17 +176,6 @@ func (f *Int64SliceFlag) Get(ctx *Context) []int64 {
|
|||||||
return ctx.Int64Slice(f.Name)
|
return ctx.Int64Slice(f.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *Int64SliceFlag) stringify() string {
|
|
||||||
var defaultVals []string
|
|
||||||
if f.Value != nil && len(f.Value.Value()) > 0 {
|
|
||||||
for _, i := range f.Value.Value() {
|
|
||||||
defaultVals = append(defaultVals, strconv.FormatInt(i, 10))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return stringifySliceFlag(f.Usage, f.Names(), defaultVals)
|
|
||||||
}
|
|
||||||
|
|
||||||
// RunAction executes flag action if set
|
// RunAction executes flag action if set
|
||||||
func (f *Int64SliceFlag) RunAction(c *Context) error {
|
func (f *Int64SliceFlag) RunAction(c *Context) error {
|
||||||
if f.Action != nil {
|
if f.Action != nil {
|
||||||
|
@ -95,7 +95,7 @@ func (i *IntSlice) Get() interface{} {
|
|||||||
// String returns a readable representation of this value
|
// String returns a readable representation of this value
|
||||||
// (for usage defaults)
|
// (for usage defaults)
|
||||||
func (f *IntSliceFlag) String() string {
|
func (f *IntSliceFlag) String() string {
|
||||||
return withEnvHint(f.GetEnvVars(), f.stringify())
|
return FlagStringer(f)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TakesValue returns true of the flag takes a value, otherwise false
|
// TakesValue returns true of the flag takes a value, otherwise false
|
||||||
@ -116,10 +116,13 @@ func (f *IntSliceFlag) GetCategory() string {
|
|||||||
// GetValue returns the flags value as string representation and an empty
|
// GetValue returns the flags value as string representation and an empty
|
||||||
// string if the flag takes no value at all.
|
// string if the flag takes no value at all.
|
||||||
func (f *IntSliceFlag) GetValue() string {
|
func (f *IntSliceFlag) GetValue() string {
|
||||||
if f.Value != nil {
|
var defaultVals []string
|
||||||
return f.Value.String()
|
if f.Value != nil && len(f.Value.Value()) > 0 {
|
||||||
|
for _, i := range f.Value.Value() {
|
||||||
|
defaultVals = append(defaultVals, strconv.Itoa(i))
|
||||||
}
|
}
|
||||||
return ""
|
}
|
||||||
|
return strings.Join(defaultVals, ", ")
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetDefaultText returns the default text for this flag
|
// GetDefaultText returns the default text for this flag
|
||||||
@ -135,6 +138,11 @@ func (f *IntSliceFlag) GetEnvVars() []string {
|
|||||||
return f.EnvVars
|
return f.EnvVars
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsSliceFlag implements DocGenerationSliceFlag.
|
||||||
|
func (f *IntSliceFlag) IsSliceFlag() bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// Apply populates the flag given the flag set and environment
|
// Apply populates the flag given the flag set and environment
|
||||||
func (f *IntSliceFlag) Apply(set *flag.FlagSet) error {
|
func (f *IntSliceFlag) Apply(set *flag.FlagSet) error {
|
||||||
// apply any default
|
// apply any default
|
||||||
@ -188,17 +196,6 @@ func (f *IntSliceFlag) RunAction(c *Context) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *IntSliceFlag) stringify() string {
|
|
||||||
var defaultVals []string
|
|
||||||
if f.Value != nil && len(f.Value.Value()) > 0 {
|
|
||||||
for _, i := range f.Value.Value() {
|
|
||||||
defaultVals = append(defaultVals, strconv.Itoa(i))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return stringifySliceFlag(f.Usage, f.Names(), defaultVals)
|
|
||||||
}
|
|
||||||
|
|
||||||
// IntSlice looks up the value of a local IntSliceFlag, returns
|
// IntSlice looks up the value of a local IntSliceFlag, returns
|
||||||
// nil if not found
|
// nil if not found
|
||||||
func (cCtx *Context) IntSlice(name string) []int {
|
func (cCtx *Context) IntSlice(name string) []int {
|
||||||
|
@ -74,7 +74,7 @@ func (s *StringSlice) Get() interface{} {
|
|||||||
// String returns a readable representation of this value
|
// String returns a readable representation of this value
|
||||||
// (for usage defaults)
|
// (for usage defaults)
|
||||||
func (f *StringSliceFlag) String() string {
|
func (f *StringSliceFlag) String() string {
|
||||||
return withEnvHint(f.GetEnvVars(), f.stringify())
|
return FlagStringer(f)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TakesValue returns true of the flag takes a value, otherwise false
|
// TakesValue returns true of the flag takes a value, otherwise false
|
||||||
@ -95,10 +95,15 @@ func (f *StringSliceFlag) GetCategory() string {
|
|||||||
// GetValue returns the flags value as string representation and an empty
|
// GetValue returns the flags value as string representation and an empty
|
||||||
// string if the flag takes no value at all.
|
// string if the flag takes no value at all.
|
||||||
func (f *StringSliceFlag) GetValue() string {
|
func (f *StringSliceFlag) GetValue() string {
|
||||||
if f.Value != nil {
|
var defaultVals []string
|
||||||
return f.Value.String()
|
if f.Value != nil && len(f.Value.Value()) > 0 {
|
||||||
|
for _, s := range f.Value.Value() {
|
||||||
|
if len(s) > 0 {
|
||||||
|
defaultVals = append(defaultVals, strconv.Quote(s))
|
||||||
}
|
}
|
||||||
return ""
|
}
|
||||||
|
}
|
||||||
|
return strings.Join(defaultVals, ", ")
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetDefaultText returns the default text for this flag
|
// GetDefaultText returns the default text for this flag
|
||||||
@ -114,6 +119,11 @@ func (f *StringSliceFlag) GetEnvVars() []string {
|
|||||||
return f.EnvVars
|
return f.EnvVars
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsSliceFlag implements DocGenerationSliceFlag.
|
||||||
|
func (f *StringSliceFlag) IsSliceFlag() bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// Apply populates the flag given the flag set and environment
|
// Apply populates the flag given the flag set and environment
|
||||||
func (f *StringSliceFlag) Apply(set *flag.FlagSet) error {
|
func (f *StringSliceFlag) Apply(set *flag.FlagSet) error {
|
||||||
// apply any default
|
// apply any default
|
||||||
@ -158,19 +168,6 @@ func (f *StringSliceFlag) Get(ctx *Context) []string {
|
|||||||
return ctx.StringSlice(f.Name)
|
return ctx.StringSlice(f.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *StringSliceFlag) stringify() string {
|
|
||||||
var defaultVals []string
|
|
||||||
if f.Value != nil && len(f.Value.Value()) > 0 {
|
|
||||||
for _, s := range f.Value.Value() {
|
|
||||||
if len(s) > 0 {
|
|
||||||
defaultVals = append(defaultVals, strconv.Quote(s))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return stringifySliceFlag(f.Usage, f.Names(), defaultVals)
|
|
||||||
}
|
|
||||||
|
|
||||||
// RunAction executes flag action if set
|
// RunAction executes flag action if set
|
||||||
func (f *StringSliceFlag) RunAction(c *Context) error {
|
func (f *StringSliceFlag) RunAction(c *Context) error {
|
||||||
if f.Action != nil {
|
if f.Action != nil {
|
||||||
|
20
flag_test.go
20
flag_test.go
@ -307,12 +307,12 @@ func TestFlagStringifying(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "float64-slice-flag",
|
name: "float64-slice-flag",
|
||||||
fl: &Float64SliceFlag{Name: "pizzas"},
|
fl: &Float64SliceFlag{Name: "pizzas"},
|
||||||
expected: "--pizzas value\t",
|
expected: "--pizzas value [ --pizzas value ]\t",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "float64-slice-flag-with-default-text",
|
name: "float64-slice-flag-with-default-text",
|
||||||
fl: &Float64SliceFlag{Name: "pepperonis", DefaultText: "shaved"},
|
fl: &Float64SliceFlag{Name: "pepperonis", DefaultText: "shaved"},
|
||||||
expected: "--pepperonis value\t(default: shaved)",
|
expected: "--pepperonis value [ --pepperonis value ]\t(default: shaved)",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "generic-flag",
|
name: "generic-flag",
|
||||||
@ -337,7 +337,7 @@ func TestFlagStringifying(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "int-slice-flag",
|
name: "int-slice-flag",
|
||||||
fl: &IntSliceFlag{Name: "pencils"},
|
fl: &IntSliceFlag{Name: "pencils"},
|
||||||
expected: "--pencils value\t",
|
expected: "--pencils value [ --pencils value ]\t",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "int-slice-flag-with-default-text",
|
name: "int-slice-flag-with-default-text",
|
||||||
@ -347,7 +347,7 @@ func TestFlagStringifying(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "uint-slice-flag",
|
name: "uint-slice-flag",
|
||||||
fl: &UintSliceFlag{Name: "pencils"},
|
fl: &UintSliceFlag{Name: "pencils"},
|
||||||
expected: "--pencils value\t",
|
expected: "--pencils value [ --pencils value ]\t",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "uint-slice-flag-with-default-text",
|
name: "uint-slice-flag-with-default-text",
|
||||||
@ -367,22 +367,22 @@ func TestFlagStringifying(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "int64-slice-flag",
|
name: "int64-slice-flag",
|
||||||
fl: &Int64SliceFlag{Name: "drawers"},
|
fl: &Int64SliceFlag{Name: "drawers"},
|
||||||
expected: "--drawers value\t",
|
expected: "--drawers value [ --drawers value ]\t",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "int64-slice-flag-with-default-text",
|
name: "int64-slice-flag-with-default-text",
|
||||||
fl: &Int64SliceFlag{Name: "handles", DefaultText: "-2"},
|
fl: &Int64SliceFlag{Name: "handles", DefaultText: "-2"},
|
||||||
expected: "--handles value\t(default: -2)",
|
expected: "--handles value [ --handles value ]\t(default: -2)",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "uint64-slice-flag",
|
name: "uint64-slice-flag",
|
||||||
fl: &Uint64SliceFlag{Name: "drawers"},
|
fl: &Uint64SliceFlag{Name: "drawers"},
|
||||||
expected: "--drawers value\t",
|
expected: "--drawers value [ --drawers value ]\t",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "uint64-slice-flag-with-default-text",
|
name: "uint64-slice-flag-with-default-text",
|
||||||
fl: &Uint64SliceFlag{Name: "handles", DefaultText: "-2"},
|
fl: &Uint64SliceFlag{Name: "handles", DefaultText: "-2"},
|
||||||
expected: "--handles value\t(default: -2)",
|
expected: "--handles value [ --handles value ]\t(default: -2)",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "path-flag",
|
name: "path-flag",
|
||||||
@ -407,12 +407,12 @@ func TestFlagStringifying(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "string-slice-flag",
|
name: "string-slice-flag",
|
||||||
fl: &StringSliceFlag{Name: "meow-sounds"},
|
fl: &StringSliceFlag{Name: "meow-sounds"},
|
||||||
expected: "--meow-sounds value\t",
|
expected: "--meow-sounds value [ --meow-sounds value ]\t",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "string-slice-flag-with-default-text",
|
name: "string-slice-flag-with-default-text",
|
||||||
fl: &StringSliceFlag{Name: "moo-sounds", DefaultText: "awoo"},
|
fl: &StringSliceFlag{Name: "moo-sounds", DefaultText: "awoo"},
|
||||||
expected: "--moo-sounds value\t(default: awoo)",
|
expected: "--moo-sounds value [ --moo-sounds value ]\t(default: awoo)",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "timestamp-flag",
|
name: "timestamp-flag",
|
||||||
|
@ -88,7 +88,7 @@ func (i *Uint64Slice) Get() interface{} {
|
|||||||
// String returns a readable representation of this value
|
// String returns a readable representation of this value
|
||||||
// (for usage defaults)
|
// (for usage defaults)
|
||||||
func (f *Uint64SliceFlag) String() string {
|
func (f *Uint64SliceFlag) String() string {
|
||||||
return withEnvHint(f.GetEnvVars(), f.stringify())
|
return FlagStringer(f)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TakesValue returns true of the flag takes a value, otherwise false
|
// TakesValue returns true of the flag takes a value, otherwise false
|
||||||
@ -109,10 +109,13 @@ func (f *Uint64SliceFlag) GetCategory() string {
|
|||||||
// GetValue returns the flags value as string representation and an empty
|
// GetValue returns the flags value as string representation and an empty
|
||||||
// string if the flag takes no value at all.
|
// string if the flag takes no value at all.
|
||||||
func (f *Uint64SliceFlag) GetValue() string {
|
func (f *Uint64SliceFlag) GetValue() string {
|
||||||
if f.Value != nil {
|
var defaultVals []string
|
||||||
return f.Value.String()
|
if f.Value != nil && len(f.Value.Value()) > 0 {
|
||||||
|
for _, i := range f.Value.Value() {
|
||||||
|
defaultVals = append(defaultVals, strconv.FormatUint(i, 10))
|
||||||
}
|
}
|
||||||
return ""
|
}
|
||||||
|
return strings.Join(defaultVals, ", ")
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetDefaultText returns the default text for this flag
|
// GetDefaultText returns the default text for this flag
|
||||||
@ -128,6 +131,11 @@ func (f *Uint64SliceFlag) GetEnvVars() []string {
|
|||||||
return f.EnvVars
|
return f.EnvVars
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsSliceFlag implements DocGenerationSliceFlag.
|
||||||
|
func (f *Uint64SliceFlag) IsSliceFlag() bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// Apply populates the flag given the flag set and environment
|
// Apply populates the flag given the flag set and environment
|
||||||
func (f *Uint64SliceFlag) Apply(set *flag.FlagSet) error {
|
func (f *Uint64SliceFlag) Apply(set *flag.FlagSet) error {
|
||||||
// apply any default
|
// apply any default
|
||||||
@ -172,17 +180,6 @@ func (f *Uint64SliceFlag) Get(ctx *Context) []uint64 {
|
|||||||
return ctx.Uint64Slice(f.Name)
|
return ctx.Uint64Slice(f.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *Uint64SliceFlag) stringify() string {
|
|
||||||
var defaultVals []string
|
|
||||||
if f.Value != nil && len(f.Value.Value()) > 0 {
|
|
||||||
for _, i := range f.Value.Value() {
|
|
||||||
defaultVals = append(defaultVals, strconv.FormatUint(i, 10))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return stringifySliceFlag(f.Usage, f.Names(), defaultVals)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Uint64Slice looks up the value of a local Uint64SliceFlag, returns
|
// Uint64Slice looks up the value of a local Uint64SliceFlag, returns
|
||||||
// nil if not found
|
// nil if not found
|
||||||
func (cCtx *Context) Uint64Slice(name string) []uint64 {
|
func (cCtx *Context) Uint64Slice(name string) []uint64 {
|
||||||
|
@ -99,7 +99,7 @@ func (i *UintSlice) Get() interface{} {
|
|||||||
// String returns a readable representation of this value
|
// String returns a readable representation of this value
|
||||||
// (for usage defaults)
|
// (for usage defaults)
|
||||||
func (f *UintSliceFlag) String() string {
|
func (f *UintSliceFlag) String() string {
|
||||||
return withEnvHint(f.GetEnvVars(), f.stringify())
|
return FlagStringer(f)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TakesValue returns true of the flag takes a value, otherwise false
|
// TakesValue returns true of the flag takes a value, otherwise false
|
||||||
@ -120,10 +120,13 @@ func (f *UintSliceFlag) GetCategory() string {
|
|||||||
// GetValue returns the flags value as string representation and an empty
|
// GetValue returns the flags value as string representation and an empty
|
||||||
// string if the flag takes no value at all.
|
// string if the flag takes no value at all.
|
||||||
func (f *UintSliceFlag) GetValue() string {
|
func (f *UintSliceFlag) GetValue() string {
|
||||||
if f.Value != nil {
|
var defaultVals []string
|
||||||
return f.Value.String()
|
if f.Value != nil && len(f.Value.Value()) > 0 {
|
||||||
|
for _, i := range f.Value.Value() {
|
||||||
|
defaultVals = append(defaultVals, strconv.FormatUint(uint64(i), 10))
|
||||||
}
|
}
|
||||||
return ""
|
}
|
||||||
|
return strings.Join(defaultVals, ", ")
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetDefaultText returns the default text for this flag
|
// GetDefaultText returns the default text for this flag
|
||||||
@ -139,6 +142,11 @@ func (f *UintSliceFlag) GetEnvVars() []string {
|
|||||||
return f.EnvVars
|
return f.EnvVars
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsSliceFlag implements DocGenerationSliceFlag.
|
||||||
|
func (f *UintSliceFlag) IsSliceFlag() bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// Apply populates the flag given the flag set and environment
|
// Apply populates the flag given the flag set and environment
|
||||||
func (f *UintSliceFlag) Apply(set *flag.FlagSet) error {
|
func (f *UintSliceFlag) Apply(set *flag.FlagSet) error {
|
||||||
// apply any default
|
// apply any default
|
||||||
@ -183,17 +191,6 @@ func (f *UintSliceFlag) Get(ctx *Context) []uint {
|
|||||||
return ctx.UintSlice(f.Name)
|
return ctx.UintSlice(f.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *UintSliceFlag) stringify() string {
|
|
||||||
var defaultVals []string
|
|
||||||
if f.Value != nil && len(f.Value.Value()) > 0 {
|
|
||||||
for _, i := range f.Value.Value() {
|
|
||||||
defaultVals = append(defaultVals, strconv.FormatUint(uint64(i), 10))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return stringifySliceFlag(f.Usage, f.Names(), defaultVals)
|
|
||||||
}
|
|
||||||
|
|
||||||
// UintSlice looks up the value of a local UintSliceFlag, returns
|
// UintSlice looks up the value of a local UintSliceFlag, returns
|
||||||
// nil if not found
|
// nil if not found
|
||||||
func (cCtx *Context) UintSlice(name string) []uint {
|
func (cCtx *Context) UintSlice(name string) []uint {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user