1package pflag
2
3import "fmt"
4
5// -- string Value
6type stringValue string
7
8func newStringValue(val string, p *string) *stringValue {
9	*p = val
10	return (*stringValue)(p)
11}
12
13func (s *stringValue) Set(val string) error {
14	*s = stringValue(val)
15	return nil
16}
17
18func (s *stringValue) String() string { return fmt.Sprintf("%s", *s) }
19
20// StringVar defines a string flag with specified name, default value, and usage string.
21// The argument p points to a string variable in which to store the value of the flag.
22func (f *FlagSet) StringVar(p *string, name string, value string, usage string) {
23	f.VarP(newStringValue(value, p), name, "", usage)
24}
25
26// Like StringVar, but accepts a shorthand letter that can be used after a single dash.
27func (f *FlagSet) StringVarP(p *string, name, shorthand string, value string, usage string) {
28	f.VarP(newStringValue(value, p), name, shorthand, usage)
29}
30
31// StringVar defines a string flag with specified name, default value, and usage string.
32// The argument p points to a string variable in which to store the value of the flag.
33func StringVar(p *string, name string, value string, usage string) {
34	CommandLine.VarP(newStringValue(value, p), name, "", usage)
35}
36
37// Like StringVar, but accepts a shorthand letter that can be used after a single dash.
38func StringVarP(p *string, name, shorthand string, value string, usage string) {
39	CommandLine.VarP(newStringValue(value, p), name, shorthand, usage)
40}
41
42// String defines a string flag with specified name, default value, and usage string.
43// The return value is the address of a string variable that stores the value of the flag.
44func (f *FlagSet) String(name string, value string, usage string) *string {
45	p := new(string)
46	f.StringVarP(p, name, "", value, usage)
47	return p
48}
49
50// Like String, but accepts a shorthand letter that can be used after a single dash.
51func (f *FlagSet) StringP(name, shorthand string, value string, usage string) *string {
52	p := new(string)
53	f.StringVarP(p, name, shorthand, value, usage)
54	return p
55}
56
57// String defines a string flag with specified name, default value, and usage string.
58// The return value is the address of a string variable that stores the value of the flag.
59func String(name string, value string, usage string) *string {
60	return CommandLine.StringP(name, "", value, usage)
61}
62
63// Like String, but accepts a shorthand letter that can be used after a single dash.
64func StringP(name, shorthand string, value string, usage string) *string {
65	return CommandLine.StringP(name, shorthand, value, usage)
66}
67