github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+incompatible/cf/flag_helpers/cli_flags.go (about)

     1  package flag_helpers
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  	"unicode/utf8"
     7  
     8  	"github.com/codegangsta/cli"
     9  )
    10  
    11  func NewIntFlag(name, usage string) IntFlagWithNoDefault {
    12  	return IntFlagWithNoDefault{cli.IntFlag{Name: name, Usage: usage}}
    13  }
    14  
    15  func NewIntFlagWithValue(name, usage string, value int) IntFlagWithNoDefault {
    16  	return IntFlagWithNoDefault{cli.IntFlag{Name: name, Value: value, Usage: usage}}
    17  }
    18  
    19  func NewStringFlag(name, usage string) StringFlagWithNoDefault {
    20  	return StringFlagWithNoDefault{cli.StringFlag{Name: name, Usage: usage}}
    21  }
    22  
    23  func NewStringSliceFlag(name, usage string) StringSliceFlagWithNoDefault {
    24  	return StringSliceFlagWithNoDefault{cli.StringSliceFlag{Name: name, Usage: usage, Value: &cli.StringSlice{}}}
    25  }
    26  
    27  type IntFlagWithNoDefault struct {
    28  	cli.IntFlag
    29  }
    30  
    31  type StringFlagWithNoDefault struct {
    32  	cli.StringFlag
    33  }
    34  
    35  type StringSliceFlagWithNoDefault struct {
    36  	cli.StringSliceFlag
    37  }
    38  
    39  func (f IntFlagWithNoDefault) String() string {
    40  	defaultVal := fmt.Sprintf("'%v'", f.Value)
    41  	return strings.Replace(f.IntFlag.String(), defaultVal, "", 1)
    42  }
    43  
    44  func (f StringFlagWithNoDefault) String() string {
    45  	defaultVal := fmt.Sprintf("'%v'", f.Value)
    46  	return strings.Replace(f.StringFlag.String(), defaultVal, "", 1)
    47  }
    48  
    49  func (f StringSliceFlagWithNoDefault) String() string {
    50  	return fmt.Sprintf("%s%s \t%s", prefixFor(f.Name), f.Name, f.Usage)
    51  }
    52  
    53  func prefixFor(name string) (prefix string) {
    54  	if utf8.RuneCountInString(name) == 1 {
    55  		prefix = "-"
    56  	} else {
    57  		prefix = "--"
    58  	}
    59  
    60  	return
    61  }