@@ -28,7 +28,7 @@ var Bar = func(cmdname string) alf.Directive {
28
28
del := & alf.Delegator {Description : "example delegator with subcommands" }
29
29
30
30
// define flags for this parent command.
31
- parentFlags := flag .NewFlagSet (cmdname , flag .ExitOnError )
31
+ parentFlags := flag .NewFlagSet (_Bin + " " + cmdname , flag .ExitOnError )
32
32
parentFlags .IntVar (& barArgs .Alpha , "alpha" , 42 , "a number" )
33
33
34
34
// set up help text.
@@ -45,8 +45,11 @@ Subcommands:
45
45
46
46
These will have their own set of flags. Put them after the subcommand.
47
47
48
- %v` , _Bin , strings .Join (del .DescribeSubcommands (), "\n \t " ))
49
- fmt .Printf ("\n \n Flags:\n \n " )
48
+ %v
49
+
50
+ Flags:
51
+
52
+ ` , parentFlags .Name (), strings .Join (del .DescribeSubcommands (), "\n \t " ))
50
53
parentFlags .PrintDefaults ()
51
54
}
52
55
del .Flags = parentFlags // share flag data from parent to child command.
@@ -58,7 +61,7 @@ Subcommands:
58
61
// Setup can be used to generate documentation and to define an
59
62
// independent flag set for the subcommand.
60
63
Setup : func (inFlags flag.FlagSet ) * flag.FlagSet {
61
- name := cmdname + " cities"
64
+ name := parentFlags . Name () + " cities"
62
65
inFlags .Init (name , flag .ExitOnError )
63
66
inFlags .BoolVar (& barArgs .Bravo , "bravo" , false , "show a city with a B" )
64
67
inFlags .StringVar (& barArgs .Charlie , "charlie" , "parker" , "customize charlie" )
@@ -67,12 +70,15 @@ Subcommands:
67
70
inFlags .Usage = func () {
68
71
fmt .Fprintf (inFlags .Output (), `Usage:
69
72
70
- %s %s [flags]
73
+ %s [flags]
71
74
72
75
Description:
73
76
74
- Output a city name. Here are some flags.` , _Bin , name )
75
- fmt .Printf ("\n \n Flags:\n \n " )
77
+ Output a city name. Here are some flags.
78
+
79
+ Flags:
80
+
81
+ ` , inFlags .Name ())
76
82
inFlags .PrintDefaults ()
77
83
}
78
84
return & inFlags
@@ -107,19 +113,22 @@ Description:
107
113
"oof" : & alf.Command {
108
114
Description : "maybe error" ,
109
115
Setup : func (inFlags flag.FlagSet ) * flag.FlagSet {
110
- name := cmdname + " oof"
116
+ name := parentFlags . Name () + " oof"
111
117
inFlags .Init (name , flag .ExitOnError )
112
118
inFlags .BoolVar (& barArgs .Bravo , "bravo" , false , "return an error if true" )
113
119
inFlags .StringVar (& barArgs .Charlie , "chuck" , "berry" , "an alternative charlie" )
114
120
inFlags .Usage = func () {
115
121
fmt .Fprintf (inFlags .Output (), `Usage:
116
122
117
- %s %s [flags]
123
+ %s [flags]
118
124
119
125
Description:
120
126
121
- Return an error if bravo is true, otherwise be ok.` , _Bin , name )
122
- fmt .Printf ("\n \n Flags:\n \n " )
127
+ Return an error if bravo is true, otherwise be ok.
128
+
129
+ Flags:
130
+
131
+ ` , inFlags .Name ())
123
132
inFlags .PrintDefaults ()
124
133
}
125
134
return & inFlags
@@ -128,7 +137,7 @@ Description:
128
137
if barArgs .Bravo {
129
138
return fmt .Errorf ("demo force show usage%w" , alf .ErrShowUsage )
130
139
}
131
- fmt .Printf ("your alternative charlie %q is %d years old" , barArgs .Charlie , barArgs .Alpha )
140
+ fmt .Printf ("your alternative charlie %q is %d years old\n " , barArgs .Charlie , barArgs .Alpha )
132
141
return nil
133
142
},
134
143
},
@@ -139,34 +148,8 @@ Description:
139
148
// - and a parent of some child commands
140
149
nested := alf.Delegator {
141
150
Description : "a subcommand (with its own commands) of a subcommand" ,
142
- Subs : map [string ]alf.Directive {
143
- "alfa" : & alf.Command {
144
- Description : "terminal command of a nested subcommand" ,
145
- Setup : func (inFlags flag.FlagSet ) * flag.FlagSet {
146
- inFlags .Init ("nested alfa" , flag .ContinueOnError )
147
- inFlags .Usage = func () { fmt .Println ("help for nested.alfa" ) }
148
- return & inFlags
149
- },
150
- Run : func (ctx context.Context ) error {
151
- fmt .Println ("called bar.moar.alfa" )
152
- return nil
153
- },
154
- },
155
- "bravo" : & alf.Command {
156
- Description : "terminal command of a nested subcommand, (returns error)" ,
157
- Setup : func (inFlags flag.FlagSet ) * flag.FlagSet {
158
- inFlags .Init ("nested bravo" , flag .ContinueOnError )
159
- inFlags .Usage = func () { fmt .Println ("help for nested.bravo" ) }
160
- return & inFlags
161
- },
162
- Run : func (ctx context.Context ) error {
163
- fmt .Println ("called bar.moar.bravo" )
164
- return errors .New ("demo error" )
165
- },
166
- },
167
- },
151
+ Flags : flag .NewFlagSet (parentFlags .Name ()+ " nested" , flag .ContinueOnError ),
168
152
}
169
- nested .Flags = flag .NewFlagSet ("nested" , flag .ContinueOnError )
170
153
nested .Flags .Usage = func () {
171
154
fmt .Fprintf (nested .Flags .Output (), `Usage:
172
155
@@ -178,10 +161,41 @@ Description:
178
161
179
162
Subcommands:
180
163
181
- %v` , _Bin , strings .Join (nested .DescribeSubcommands (), "\n \t " ))
182
- fmt .Printf ("\n \n Flags:\n \n " )
164
+ %v
165
+
166
+ Flags:
167
+
168
+ ` , nested .Flags .Name (), strings .Join (nested .DescribeSubcommands (), "\n \t " ))
183
169
nested .Flags .PrintDefaults ()
184
170
}
171
+ nested .Subs = map [string ]alf.Directive {
172
+ "alfa" : & alf.Command {
173
+ Description : "terminal command of a nested subcommand" ,
174
+ Setup : func (inFlags flag.FlagSet ) * flag.FlagSet {
175
+ name := nested .Flags .Name () + " alfa"
176
+ inFlags .Init (name , flag .ContinueOnError )
177
+ inFlags .Usage = func () { fmt .Fprintf (inFlags .Output (), "help for %s\n " , inFlags .Name ()) }
178
+ return & inFlags
179
+ },
180
+ Run : func (ctx context.Context ) error {
181
+ fmt .Println ("called bar.nested.alfa" )
182
+ return nil
183
+ },
184
+ },
185
+ "bravo" : & alf.Command {
186
+ Description : "terminal command of a nested subcommand, (returns error)" ,
187
+ Setup : func (inFlags flag.FlagSet ) * flag.FlagSet {
188
+ name := nested .Flags .Name () + " bravo"
189
+ inFlags .Init (name , flag .ContinueOnError )
190
+ inFlags .Usage = func () { fmt .Fprintf (inFlags .Output (), "help for %s\n " , inFlags .Name ()) }
191
+ return & inFlags
192
+ },
193
+ Run : func (ctx context.Context ) error {
194
+ fmt .Println ("called bar.nested.bravo" )
195
+ return errors .New ("demo error" )
196
+ },
197
+ },
198
+ }
185
199
del .Subs ["nested" ] = & nested
186
200
187
201
return del
0 commit comments