package cmd import ( "fmt" "runtime" "strconv" "strings" "time" ) // HelpTemplate is the structure which holds the necessary information for the help command. type HelpTemplate struct { BuildTime string BuildRevision string ShowGoRuntimeVersion bool Template fmt.Stringer } func (h HelpTemplate) String() string { tmpl := `{{with (or .Long .Short)}}{{. | trimTrailingWhitespaces}} {{end}}{{if or .Runnable .HasSubCommands}}{{.UsageString}}{{end}}` if h.BuildRevision != "" { buildTitle := ">>>> build" // if we ever want an emoji, there is one: \U0001f4bb tab := strings.Repeat(" ", len(buildTitle)) n, _ := strconv.ParseInt(h.BuildTime, 10, 64) buildTimeStr := time.Unix(n, 0).Format(time.UnixDate) buildTmpl := fmt.Sprintf("\n%s\n", buildTitle) + fmt.Sprintf("%s revision %s\n", tab, h.BuildRevision) + fmt.Sprintf("%s datetime %s\n", tab, buildTimeStr) if h.ShowGoRuntimeVersion { buildTmpl += fmt.Sprintf("%s runtime %s\n", tab, runtime.Version()) } tmpl += buildTmpl } return tmpl }