...

Source file src/github.com/spf13/pflag/count.go

Documentation: github.com/spf13/pflag

     1  package pflag
     2  
     3  import "strconv"
     4  
     5  // -- count Value
     6  type countValue int
     7  
     8  func newCountValue(val int, p *int) *countValue {
     9  	*p = val
    10  	return (*countValue)(p)
    11  }
    12  
    13  func (i *countValue) Set(s string) error {
    14  	// "+1" means that no specific value was passed, so increment
    15  	if s == "+1" {
    16  		*i = countValue(*i + 1)
    17  		return nil
    18  	}
    19  	v, err := strconv.ParseInt(s, 0, 0)
    20  	*i = countValue(v)
    21  	return err
    22  }
    23  
    24  func (i *countValue) Type() string {
    25  	return "count"
    26  }
    27  
    28  func (i *countValue) String() string { return strconv.Itoa(int(*i)) }
    29  
    30  func countConv(sval string) (interface{}, error) {
    31  	i, err := strconv.Atoi(sval)
    32  	if err != nil {
    33  		return nil, err
    34  	}
    35  	return i, nil
    36  }
    37  
    38  // GetCount return the int value of a flag with the given name
    39  func (f *FlagSet) GetCount(name string) (int, error) {
    40  	val, err := f.getFlagType(name, "count", countConv)
    41  	if err != nil {
    42  		return 0, err
    43  	}
    44  	return val.(int), nil
    45  }
    46  
    47  // CountVar defines a count flag with specified name, default value, and usage string.
    48  // The argument p points to an int variable in which to store the value of the flag.
    49  // A count flag will add 1 to its value every time it is found on the command line
    50  func (f *FlagSet) CountVar(p *int, name string, usage string) {
    51  	f.CountVarP(p, name, "", usage)
    52  }
    53  
    54  // CountVarP is like CountVar only take a shorthand for the flag name.
    55  func (f *FlagSet) CountVarP(p *int, name, shorthand string, usage string) {
    56  	flag := f.VarPF(newCountValue(0, p), name, shorthand, usage)
    57  	flag.NoOptDefVal = "+1"
    58  }
    59  
    60  // CountVar like CountVar only the flag is placed on the CommandLine instead of a given flag set
    61  func CountVar(p *int, name string, usage string) {
    62  	CommandLine.CountVar(p, name, usage)
    63  }
    64  
    65  // CountVarP is like CountVar only take a shorthand for the flag name.
    66  func CountVarP(p *int, name, shorthand string, usage string) {
    67  	CommandLine.CountVarP(p, name, shorthand, usage)
    68  }
    69  
    70  // Count defines a count flag with specified name, default value, and usage string.
    71  // The return value is the address of an int variable that stores the value of the flag.
    72  // A count flag will add 1 to its value every time it is found on the command line
    73  func (f *FlagSet) Count(name string, usage string) *int {
    74  	p := new(int)
    75  	f.CountVarP(p, name, "", usage)
    76  	return p
    77  }
    78  
    79  // CountP is like Count only takes a shorthand for the flag name.
    80  func (f *FlagSet) CountP(name, shorthand string, usage string) *int {
    81  	p := new(int)
    82  	f.CountVarP(p, name, shorthand, usage)
    83  	return p
    84  }
    85  
    86  // Count defines a count flag with specified name, default value, and usage string.
    87  // The return value is the address of an int variable that stores the value of the flag.
    88  // A count flag will add 1 to its value evey time it is found on the command line
    89  func Count(name string, usage string) *int {
    90  	return CommandLine.CountP(name, "", usage)
    91  }
    92  
    93  // CountP is like Count only takes a shorthand for the flag name.
    94  func CountP(name, shorthand string, usage string) *int {
    95  	return CommandLine.CountP(name, shorthand, usage)
    96  }
    97  

View as plain text