package prog import ( "bytes" "fmt" "os" "sort" "strings" "github.com/mitchellh/cli" ) const ( Name = "pasy" Version = "0.1.0" helpFmt = `Usage: %s [-h|--help|-v|--version] [] Available commands are: ` ) func FuncHelp(cma map[string]cli.CommandFactory) string { bu := &bytes.Buffer{} bu.WriteString(fmt.Sprintf(helpFmt, Name)) keys := make([]string, 0, len(cma)) longest := 0 for c, _ := range cma { if len(c) > longest { longest = len(c) } keys = append(keys, c) } sort.Strings(keys) for _, k := range keys { cmd, err := cma[k]() if err != nil { PrintErr(fmt.Sprintf("unable to call init function from command '%s': %v", k, err)) continue } bu.WriteString(fmt.Sprintf(" %s%s %s\n", k, strings.Repeat(" ", longest-len(k)), cmd.Synopsis(), )) } return bu.String() } func PrintErr(msg string) { fmt.Fprintf(os.Stderr, "error: %s\n", msg) }