added program name and description to the help output

This commit is contained in:
Celestino Amoroso 2026-01-22 12:36:33 +01:00
parent 9e2e5c1f37
commit 69f550884a
2 changed files with 28 additions and 5 deletions

View File

@ -11,6 +11,12 @@ func (cli *CliParser) Usage() string {
var sb strings.Builder
program, _ := cli.GetVersionSection("program")
fmt.Fprint(&sb, "NAME", program)
if cli.description != "" {
fmt.Fprint(&sb, "-", cli.description)
}
sb.WriteByte('\n')
publicCount := cli.publicOptionCount()
if publicCount > 0 {
fmt.Fprintf(&sb, "USAGE: %s [<options>] %s\n", program, cli.getArgsTemplate())

27
cli.go
View File

@ -2,6 +2,7 @@ package cli
import (
"fmt"
"strings"
)
type CliOptionTracer interface {
@ -38,17 +39,33 @@ type OptReference interface {
}
type CliParser struct {
version string
options []cliOptionParser
argSpecs []argSpec
cliArgs []string
description string
version string
options []cliOptionParser
argSpecs []argSpec
cliArgs []string
}
func (cli *CliParser) Init(argv []string, version string) {
func (cli *CliParser) Init(argv []string, version string, description string) {
cli.version = version
cli.description = description
cli.cliArgs = argv
}
func (cli *CliParser) GetOption(name string) (ref OptReference) {
var opt cliOptionParser
if strings.HasPrefix(name, "-") {
opt = cli.findOptionByArg(name)
} else {
opt = cli.findOptionByName(name)
}
if opt != nil {
ref = opt.(OptReference)
}
return ref
}
func (cli *CliParser) SetIncompatibleOption(optName string, incompatibleOptNames ...string) error {
var opti cliOptionParser
if opti = cli.findOptionByName(optName); opti == nil {