enbas/internal/usage/app.go

54 lines
1.2 KiB
Go
Raw Normal View History

package usage
import (
"flag"
"fmt"
"slices"
"strings"
"text/tabwriter"
"codeflow.dananglin.me.uk/apollo/enbas/internal/info"
)
func AppUsageFunc() func() {
cmds := make([]string, len(summaries))
ind := 0
for k := range summaries {
cmds[ind] = k
ind++
}
slices.Sort(cmds)
return func() {
var builder strings.Builder
builder.WriteString("SUMMARY:\n " + info.ApplicationName + " - A GoToSocial client for the terminal.\n\n")
if info.BinaryVersion != "" {
builder.WriteString("VERSION:\n " + info.BinaryVersion + "\n\n")
}
builder.WriteString("USAGE:\n " + info.ApplicationName + " [flags]\n " + info.ApplicationName + " [flags] [command]\n\nCOMMANDS:")
tableWriter := tabwriter.NewWriter(&builder, 0, 8, 0, '\t', 0)
for _, cmd := range cmds {
fmt.Fprintf(tableWriter, "\n %s\t%s", cmd, summaries[cmd])
}
tableWriter.Flush()
builder.WriteString("\n\nFLAGS:\n --help\n print the help message")
flag.VisitAll(func(f *flag.Flag) {
fmt.Fprintf(&builder, "\n --%s\n %s", f.Name, f.Usage)
})
builder.WriteString("\n\nUse \"" + info.ApplicationName + " [command] --help\" for more information about a command.\n")
w := flag.CommandLine.Output()
fmt.Fprint(w, builder.String())
}
}