(w io.Writer, tmpl string, data interface{})
| 374 | } |
| 375 | |
| 376 | func cusHelpPrinter(w io.Writer, tmpl string, data interface{}) { |
| 377 | if tmpl == AppHelpTemplate { |
| 378 | cliApp := data.(*cli.App) |
| 379 | cliApp.Commands = formatCommand(cliApp.Commands) |
| 380 | cliApp.Flags = formatFlags(cliApp.Flags) |
| 381 | categorized := make(map[string][]cli.Flag) |
| 382 | for _, flag := range data.(*cli.App).Flags { |
| 383 | _, ok := categorized[flag.String()] |
| 384 | if !ok { |
| 385 | gName := flagCategory(flag) |
| 386 | categorized[gName] = append(categorized[gName], flag) |
| 387 | } |
| 388 | } |
| 389 | sorted := make([]flagGroup, 0, len(categorized)) |
| 390 | for cat, flgs := range categorized { |
| 391 | sorted = append(sorted, flagGroup{cat, flgs}) |
| 392 | } |
| 393 | sort.Sort(byCategory(sorted)) |
| 394 | cusData := &cusHelpData{ |
| 395 | App: cliApp, |
| 396 | FlagGroups: sorted, |
| 397 | } |
| 398 | data = cusData |
| 399 | } else if tmpl == SubcommandHelpTemplate { |
| 400 | cliApp := data.(*cli.App) |
| 401 | cliApp.Commands = formatCommand(cliApp.Commands) |
| 402 | data = cliApp |
| 403 | } else if tmpl == CommandHelpTemplate { |
| 404 | cliCmd := data.(cli.Command) |
| 405 | cliCmd.Flags = formatFlags(cliCmd.Flags) |
| 406 | categorized := make(map[string][]cli.Flag) |
| 407 | for _, flag := range cliCmd.Flags { |
| 408 | _, ok := categorized[flag.String()] |
| 409 | if !ok { |
| 410 | categorized[flagCategory(flag)] = append(categorized[flagCategory(flag)], flag) |
| 411 | } |
| 412 | } |
| 413 | sorted := make([]flagGroup, 0, len(categorized)) |
| 414 | for cat, flgs := range categorized { |
| 415 | sorted = append(sorted, flagGroup{cat, flgs}) |
| 416 | } |
| 417 | sort.Sort(byCategory(sorted)) |
| 418 | data = map[string]interface{}{ |
| 419 | "cmd": cliCmd, |
| 420 | "categorizedFlags": sorted, |
| 421 | } |
| 422 | } |
| 423 | |
| 424 | funcMap := template.FuncMap{"join": strings.Join} |
| 425 | t := template.Must(template.New("help").Funcs(funcMap).Parse(tmpl)) |
| 426 | err := t.Execute(w, data) |
| 427 | if err != nil { |
| 428 | // If the writer is closed, t.Execute will fail, and there's nothing we can do to recover. |
| 429 | PrintErrorMsg("CLI TEMPLATE ERROR: %#v\n", err) |
| 430 | return |
| 431 | } |
| 432 | } |
| 433 |
nothing calls this directly
no test coverage detected