diff --git a/command/command.go b/command/command.go index 525dde3..eeec135 100644 --- a/command/command.go +++ b/command/command.go @@ -6,6 +6,9 @@ import ( "strings" ) +// UsageInternal causes the command to be hidden from help text when set as the usage string. +const UsageInternal = "internal" + type ( // HandlerFunc is called when matching a directly handled subcommand tree. HandlerFunc = func(args []string) error diff --git a/command/help.go b/command/help.go index a373540..cb22ce5 100644 --- a/command/help.go +++ b/command/help.go @@ -44,8 +44,10 @@ func (n *node) writeCommands(w io.Writer) error { if n == nil { return nil } - if _, err := fmt.Fprintf(w, "\t%s\t%s\n", n.name, n.usage); err != nil { - return err + if n.usage != UsageInternal { + if _, err := fmt.Fprintf(w, "\t%s\t%s\n", n.name, n.usage); err != nil { + return err + } } return n.next.writeCommands(w) } diff --git a/command/parse_test.go b/command/parse_test.go index 3174dcc..4bb924f 100644 --- a/command/parse_test.go +++ b/command/parse_test.go @@ -289,6 +289,7 @@ func buildTestCommand(wout, wlog io.Writer) (c command.Command) { }) c.New("empty", "empty subcommand") + c.New("hidden", command.UsageInternal) c.New("join", "wraps strings.Join"). Command("out", "write result to wout", func(args []string) error {