Add hidden tests
diff --git a/help_test.go b/help_test.go
index 33f67a3..33d21bf 100644
--- a/help_test.go
+++ b/help_test.go
@@ -22,6 +22,7 @@
EnvDefault2 string `long:"env-default2" env:"ENV_DEFAULT" description:"Test env-default2 value"`
OptionWithArgName string `long:"opt-with-arg-name" value-name:"something" description:"Option with named argument"`
OptionWithChoices string `long:"opt-with-choices" value-name:"choice" choice:"dog" choice:"cat" description:"Option with choices"`
+ Hidden string `long:"hidden" description:"Hidden option" hidden:"yes"`
OnlyIni string `ini-name:"only-ini" description:"Option only available in ini"`
@@ -30,8 +31,13 @@
IntMap map[string]int `long:"intmap" default:"a:1" description:"A map from string to int" ini-name:"int-map"`
} `group:"Other Options"`
+ HiddenGroup struct {
+ InsideHiddenGroup string `long:"inside-hidden-group" description:"Inside hidden group"`
+ } `group:"Hidden group" hidden:"yes"`
+
Group struct {
- Opt string `long:"opt" description:"This is a subgroup option"`
+ Opt string `long:"opt" description:"This is a subgroup option"`
+ HiddenInsideGroup string `long:"hidden-inside-group" description:"Hidden inside group" hidden:"yes"`
Group struct {
Opt string `long:"opt" description:"This is a subsubgroup option"`
@@ -42,6 +48,10 @@
ExtraVerbose []bool `long:"extra-verbose" description:"Use for extra verbosity"`
} `command:"command" alias:"cm" alias:"cmd" description:"A command"`
+ HiddenCommand struct {
+ ExtraVerbose []bool `long:"extra-verbose" description:"Use for extra verbosity"`
+ } `command:"hidden-command" description:"A hidden command" hidden:"yes"`
+
Args struct {
Filename string `positional-arg-name:"filename" description:"A filename"`
Number int `positional-arg-name:"num" description:"A number"`
diff --git a/ini_private.go b/ini_private.go
index 887aa76..45434ec 100644
--- a/ini_private.go
+++ b/ini_private.go
@@ -83,7 +83,7 @@
comments := (options & IniIncludeComments) != IniNone
for _, option := range group.options {
- if option.isFunc() {
+ if option.isFunc() || option.Hidden {
continue
}
@@ -186,12 +186,18 @@
func writeCommandIni(command *Command, namespace string, writer io.Writer, options IniOptions) {
command.eachGroup(func(group *Group) {
- writeGroupIni(command, group, namespace, writer, options)
+ if !group.Hidden {
+ writeGroupIni(command, group, namespace, writer, options)
+ }
})
for _, c := range command.commands {
var nns string
+ if c.Hidden {
+ continue
+ }
+
if len(namespace) != 0 {
nns = c.Name + "." + nns
} else {
diff --git a/man.go b/man.go
index 5529d92..8e4a8b7 100644
--- a/man.go
+++ b/man.go
@@ -38,7 +38,7 @@
func writeManPageOptions(wr io.Writer, grp *Group) {
grp.eachGroup(func(group *Group) {
- if grp.Hidden {
+ if group.Hidden {
return
}