Add a dummy description value to mark an option as "hidden", so it will not be shown in the help text. Mark few options as hidden: - common: --short-options, --long-options - virt-sysprep: --dump-pod, --dump-pod-options --- Related question: should --debug-gc be considered really internal, thus marked as such and removed from the documentations? mllib/getopt.ml | 13 ++++++++++--- mllib/getopt.mli | 4 ++++ sysprep/main.ml | 4 ++-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/mllib/getopt.ml b/mllib/getopt.ml index 90f4c44..550baa4 100644 --- a/mllib/getopt.ml +++ b/mllib/getopt.ml @@ -43,6 +43,8 @@ type t = { usage_msg : usage_msg; } +let hidden_option_description = "" + external getopt_parse : string array -> (c_keys * spec * doc) array -> ?anon_fun:anon_fun -> usage_msg -> unit = "guestfs_int_mllib_getopt_parse" let column_wrap = 38 @@ -56,6 +58,11 @@ let show_help h () = let prologue = sprintf (f_"%s\nOptions:\n") h.usage_msg in Buffer.add_string b prologue; + let specs = List.filter ( + fun (_, _, doc) -> + doc <> hidden_option_description + ) h.specs in + List.iter ( fun (keys, spec, doc) -> let columns = ref 0 in @@ -88,7 +95,7 @@ let show_help h () = ); Buffer.add_string b doc; Buffer.add_char b '\n'; - ) h.specs; + ) specs; Buffer.output_buffer stdout b; exit 0 @@ -158,8 +165,8 @@ let create specs ?anon_fun usage_msg = } in let specs = specs @ [ - [ "--short-options" ], Unit (display_short_options t), s_"List short options (internal)"; - [ "--long-options" ], Unit (display_long_options t), s_"List long options (internal)"; + [ "--short-options" ], Unit (display_short_options t), hidden_option_description; + [ "--long-options" ], Unit (display_long_options t), hidden_option_description; ] in (* Decide whether the help option can be added, and which switches use. *) diff --git a/mllib/getopt.mli b/mllib/getopt.mli index 9d9737e..2a8bada 100644 --- a/mllib/getopt.mli +++ b/mllib/getopt.mli @@ -47,6 +47,8 @@ type anon_fun = (string -> unit) type speclist = (keys * spec * doc) list +val hidden_option_description : string + val compare_command_line_args : string -> string -> int (** Compare command line arguments for equality, ignoring any leading [-]s. *) @@ -60,6 +62,8 @@ val create : speclist -> ?anon_fun:anon_fun -> usage_msg -> t [speclist] is a list of triples [(keys, spec, doc)]: [keys] is a list of options, [spec] is the associated action, and [doc] is the help text. + If [doc] is [Getopt.hidden_option_description], then the option + is considered internal, and it is not shown in the help text. [anon_fun] is an optional function to handle non-option arguments; not specifying one means that only options are allowed, and diff --git a/sysprep/main.ml b/sysprep/main.ml index 3259d0d..b2df880 100644 --- a/sysprep/main.ml +++ b/sysprep/main.ml @@ -121,8 +121,8 @@ let main () = [ "-c"; "--connect" ], Getopt.Set_string (s_"uri", libvirturi), s_"Set libvirt URI"; [ "-d"; "--domain" ], Getopt.String (s_"domain", set_domain), s_"Set libvirt guest name"; [ "-n"; "--dryrun"; "--dry-run" ], Getopt.Set dryrun, s_"Perform a dry run"; - [ "--dump-pod" ], Getopt.Unit dump_pod, s_"Dump POD (internal)"; - [ "--dump-pod-options" ], Getopt.Unit dump_pod_options, s_"Dump POD for options (internal)"; + [ "--dump-pod" ], Getopt.Unit dump_pod, Getopt.hidden_option_description; + [ "--dump-pod-options" ], Getopt.Unit dump_pod_options, Getopt.hidden_option_description; [ "--enable" ], Getopt.String (s_"operations", set_enable), s_"Enable specific operations"; [ "--format" ], Getopt.String (s_"format", set_format), s_"Set format (default: auto)"; [ "--list-operations" ], Getopt.Unit list_operations, s_"List supported operations"; -- 2.7.4