iris/_examples/project/cmd/help.go
2021-11-19 14:13:42 +02:00

44 lines
1.0 KiB
Go

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
}