MCPcopy Create free account
hub / github.com/DNAProject/DNA / cusHelpPrinter

Function cusHelpPrinter

cmd/usage.go:376–432  ·  view source on GitHub ↗
(w io.Writer, tmpl string, data interface{})

Source from the content-addressed store, hash-verified

374}
375
376func 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

Callers

nothing calls this directly

Calls 7

formatCommandFunction · 0.85
formatFlagsFunction · 0.85
flagCategoryFunction · 0.85
byCategoryTypeAlias · 0.85
PrintErrorMsgFunction · 0.85
ExecuteMethod · 0.80
StringMethod · 0.45

Tested by

no test coverage detected