2024-09-21 16:53:11 +01:00
|
|
|
package commands
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"maps"
|
2024-09-23 22:26:15 +01:00
|
|
|
"os"
|
2024-09-21 16:53:11 +01:00
|
|
|
"slices"
|
2024-09-23 22:26:15 +01:00
|
|
|
"strings"
|
|
|
|
"text/tabwriter"
|
2024-09-21 16:53:11 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
func HelpFunc(summaries map[string]string) CommandFunc {
|
|
|
|
return func(_ []string) error {
|
|
|
|
keys := []string{}
|
|
|
|
|
|
|
|
for key := range maps.All(summaries) {
|
|
|
|
keys = append(keys, key)
|
|
|
|
}
|
|
|
|
|
|
|
|
slices.Sort(keys)
|
|
|
|
|
2024-09-23 22:26:15 +01:00
|
|
|
var builder strings.Builder
|
|
|
|
|
|
|
|
builder.WriteString("\nCommands:\n")
|
|
|
|
|
|
|
|
tableWriter := tabwriter.NewWriter(&builder, 0, 8, 0, '\t', 0)
|
2024-09-21 16:53:11 +01:00
|
|
|
|
|
|
|
for _, key := range slices.All(keys) {
|
2024-09-23 22:26:15 +01:00
|
|
|
fmt.Fprintf(tableWriter, "\n%s\t%s", key, summaries[key])
|
2024-09-21 16:53:11 +01:00
|
|
|
}
|
|
|
|
|
2024-09-23 22:26:15 +01:00
|
|
|
tableWriter.Flush()
|
|
|
|
|
|
|
|
builder.WriteString("\n\n")
|
|
|
|
|
|
|
|
fmt.Fprint(os.Stdout, builder.String())
|
2024-09-21 16:53:11 +01:00
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
}
|