@@ -116,7 +116,7 @@ func (c *Commander) Run(args []string) error {
116
116
}
117
117
118
118
func (c * Commander ) usage () error {
119
- err := tmpl (os .Stderr , usageTemplate , c )
119
+ err := tmpl (os .Stderr ,strings . Replace ( usageTemplate ,"%%MAX%%" , fmt . Sprintf ( "%d" , c . MaxLen ()), - 1 ), c )
120
120
if err != nil {
121
121
fmt .Println (err )
122
122
}
@@ -157,6 +157,23 @@ func (c *Commander) help(args []string) error {
157
157
return fmt .Errorf ("Unknown help topic %#q. Run '%v help'.\n " , arg , c .Name )
158
158
}
159
159
160
+ func (c * Commander ) MaxLen () (res int ) {
161
+ res = 0
162
+ for _ ,cmd := range c .Commands {
163
+ i := len (cmd .Name ())
164
+ if i > res {
165
+ res = i
166
+ }
167
+ }
168
+ for _ ,cmd := range c .Commanders {
169
+ i := len (cmd .Name )
170
+ if i > res {
171
+ res = i
172
+ }
173
+ }
174
+ return
175
+ }
176
+
160
177
// FullName returns the full name of the commander, prefixed with its parent commanders, if any.
161
178
func (c * Commander ) FullName () string {
162
179
n := c .Name
@@ -226,20 +243,19 @@ func (c *Command) Runnable() bool {
226
243
}
227
244
228
245
var usageTemplate = `Usage:
229
-
230
246
{{.Name}} command [arguments]
231
247
232
248
The commands are:
233
249
{{range .Commands}}{{if .Runnable}}
234
- {{.Name | printf "%-11s "}} {{.Short}}{{end}}{{end}}
235
- {{range .Commanders}}
236
- {{.Name | printf "%-11s "}} {{.Short}}{{end}}
250
+ {{.Name | printf "%-%%MAX%%s "}} {{.Short}}{{end}}{{end}}
251
+ {{range $cmd := .Commanders}}
252
+ {{.Name | printf "%-%%MAX%%s "}} {{.Short}}{{end}}
237
253
238
254
Use "{{$.Name}} help [command]" for more information about a command.
239
255
240
256
Additional help topics:
241
- {{range .Commands}}{{if not .Runnable}}
242
- {{.Name | printf "%-11s "}} {{.Short}}{{end}}{{end}}
257
+ {{range $cmd := .Commands}}{{if not .Runnable}}
258
+ {{.Name | printf "%-%%MAX%%s "}} {{.Short}}{{end}}{{end}}
243
259
244
260
Use "{{.Name}} help [topic]" for more information about that topic.
245
261
0 commit comments