mirror of
https://github.com/Luzifer/cloudkeys-go.git
synced 2024-11-08 22:20:05 +00:00
87 lines
3.2 KiB
Go
87 lines
3.2 KiB
Go
|
package pflag
|
||
|
|
||
|
import (
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
// -- stringSlice Value
|
||
|
type stringSliceValue []string
|
||
|
|
||
|
func newStringSliceValue(val []string, p *[]string) *stringSliceValue {
|
||
|
*p = val
|
||
|
return (*stringSliceValue)(p)
|
||
|
}
|
||
|
|
||
|
func (s *stringSliceValue) Set(val string) error {
|
||
|
v := strings.Split(val, ",")
|
||
|
*s = stringSliceValue(v)
|
||
|
return nil
|
||
|
}
|
||
|
func (s *stringSliceValue) Type() string {
|
||
|
return "stringSlice"
|
||
|
}
|
||
|
|
||
|
func (s *stringSliceValue) String() string { return strings.Join(*s, ",") }
|
||
|
|
||
|
func stringSliceConv(sval string) (interface{}, error) {
|
||
|
v := strings.Split(sval, ",")
|
||
|
return v, nil
|
||
|
}
|
||
|
|
||
|
// GetStringSlice return the []string value of a flag with the given name
|
||
|
func (f *FlagSet) GetStringSlice(name string) ([]string, error) {
|
||
|
val, err := f.getFlagType(name, "stringSlice", stringSliceConv)
|
||
|
if err != nil {
|
||
|
return []string{}, err
|
||
|
}
|
||
|
return val.([]string), nil
|
||
|
}
|
||
|
|
||
|
// StringSliceVar defines a string flag with specified name, default value, and usage string.
|
||
|
// The argument p points to a []string variable in which to store the value of the flag.
|
||
|
func (f *FlagSet) StringSliceVar(p *[]string, name string, value []string, usage string) {
|
||
|
f.VarP(newStringSliceValue(value, p), name, "", usage)
|
||
|
}
|
||
|
|
||
|
// Like StringSliceVar, but accepts a shorthand letter that can be used after a single dash.
|
||
|
func (f *FlagSet) StringSliceVarP(p *[]string, name, shorthand string, value []string, usage string) {
|
||
|
f.VarP(newStringSliceValue(value, p), name, shorthand, usage)
|
||
|
}
|
||
|
|
||
|
// StringSliceVar defines a string flag with specified name, default value, and usage string.
|
||
|
// The argument p points to a []string variable in which to store the value of the flag.
|
||
|
func StringSliceVar(p *[]string, name string, value []string, usage string) {
|
||
|
CommandLine.VarP(newStringSliceValue(value, p), name, "", usage)
|
||
|
}
|
||
|
|
||
|
// Like StringSliceVar, but accepts a shorthand letter that can be used after a single dash.
|
||
|
func StringSliceVarP(p *[]string, name, shorthand string, value []string, usage string) {
|
||
|
CommandLine.VarP(newStringSliceValue(value, p), name, shorthand, usage)
|
||
|
}
|
||
|
|
||
|
// StringSlice defines a string flag with specified name, default value, and usage string.
|
||
|
// The return value is the address of a []string variable that stores the value of the flag.
|
||
|
func (f *FlagSet) StringSlice(name string, value []string, usage string) *[]string {
|
||
|
p := make([]string, 0)
|
||
|
f.StringSliceVarP(&p, name, "", value, usage)
|
||
|
return &p
|
||
|
}
|
||
|
|
||
|
// Like StringSlice, but accepts a shorthand letter that can be used after a single dash.
|
||
|
func (f *FlagSet) StringSliceP(name, shorthand string, value []string, usage string) *[]string {
|
||
|
p := make([]string, 0)
|
||
|
f.StringSliceVarP(&p, name, shorthand, value, usage)
|
||
|
return &p
|
||
|
}
|
||
|
|
||
|
// StringSlice defines a string flag with specified name, default value, and usage string.
|
||
|
// The return value is the address of a []string variable that stores the value of the flag.
|
||
|
func StringSlice(name string, value []string, usage string) *[]string {
|
||
|
return CommandLine.StringSliceP(name, "", value, usage)
|
||
|
}
|
||
|
|
||
|
// Like StringSlice, but accepts a shorthand letter that can be used after a single dash.
|
||
|
func StringSliceP(name, shorthand string, value []string, usage string) *[]string {
|
||
|
return CommandLine.StringSliceP(name, shorthand, value, usage)
|
||
|
}
|