1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 20:27:34 +00:00

LibCore+Base: Add way to hide ArgsParser opt.s from specific usage texts

This adds the ability to hide certain options from certain help texts.
`--complete` is always hidden, whereas `--help` and `--version` are
hidden from Markdown help text only.
Note that in all cases these three options are hidden from the short
usage line.
This commit is contained in:
sin-ack 2022-04-03 22:33:09 +00:00 committed by Andreas Kling
parent a387b822a0
commit cbc89632b9
26 changed files with 57 additions and 115 deletions

View file

@ -30,6 +30,14 @@ public:
Ignore,
};
/// When an option is hidden.
/// If the hide mode is not None, then it's always hidden from the usage/synopsis.
enum class OptionHideMode {
None,
Markdown,
CommandLineAndMarkdown,
};
struct Option {
bool requires_argument { true };
char const* help_string { nullptr };
@ -37,7 +45,7 @@ public:
char short_name { 0 };
char const* value_name { nullptr };
Function<bool(char const*)> accept_value;
bool hide_from_help_and_autocomplete { false };
OptionHideMode hide_mode { OptionHideMode::None };
String name_for_display() const
{
@ -70,17 +78,17 @@ public:
void print_version(FILE*);
void add_option(Option&&);
void add_ignored(char const* long_name, char short_name, bool hidden = false);
void add_option(bool& value, char const* help_string, char const* long_name, char short_name, bool hidden = false);
void add_option(char const*& value, char const* help_string, char const* long_name, char short_name, char const* value_name, bool hidden = false);
void add_option(String& value, char const* help_string, char const* long_name, char short_name, char const* value_name, bool hidden = false);
void add_option(StringView& value, char const* help_string, char const* long_name, char short_name, char const* value_name, bool hidden = false);
void add_option(int& value, char const* help_string, char const* long_name, char short_name, char const* value_name, bool hidden = false);
void add_option(unsigned& value, char const* help_string, char const* long_name, char short_name, char const* value_name, bool hidden = false);
void add_option(double& value, char const* help_string, char const* long_name, char short_name, char const* value_name, bool hidden = false);
void add_option(Optional<double>& value, char const* help_string, char const* long_name, char short_name, char const* value_name, bool hidden = false);
void add_option(Optional<size_t>& value, char const* help_string, char const* long_name, char short_name, char const* value_name, bool hidden = false);
void add_option(Vector<size_t>& values, char const* help_string, char const* long_name, char short_name, char const* value_name, char separator = ',', bool hidden = false);
void add_ignored(char const* long_name, char short_name, OptionHideMode hide_mode = OptionHideMode::None);
void add_option(bool& value, char const* help_string, char const* long_name, char short_name, OptionHideMode hide_mode = OptionHideMode::None);
void add_option(char const*& value, char const* help_string, char const* long_name, char short_name, char const* value_name, OptionHideMode hide_mode = OptionHideMode::None);
void add_option(String& value, char const* help_string, char const* long_name, char short_name, char const* value_name, OptionHideMode hide_mode = OptionHideMode::None);
void add_option(StringView& value, char const* help_string, char const* long_name, char short_name, char const* value_name, OptionHideMode hide_mode = OptionHideMode::None);
void add_option(int& value, char const* help_string, char const* long_name, char short_name, char const* value_name, OptionHideMode hide_mode = OptionHideMode::None);
void add_option(unsigned& value, char const* help_string, char const* long_name, char short_name, char const* value_name, OptionHideMode hide_mode = OptionHideMode::None);
void add_option(double& value, char const* help_string, char const* long_name, char short_name, char const* value_name, OptionHideMode hide_mode = OptionHideMode::None);
void add_option(Optional<double>& value, char const* help_string, char const* long_name, char short_name, char const* value_name, OptionHideMode hide_mode = OptionHideMode::None);
void add_option(Optional<size_t>& value, char const* help_string, char const* long_name, char short_name, char const* value_name, OptionHideMode hide_mode = OptionHideMode::None);
void add_option(Vector<size_t>& values, char const* help_string, char const* long_name, char short_name, char const* value_name, char separator = ',', OptionHideMode hide_mode = OptionHideMode::None);
void add_positional_argument(Arg&&);
void add_positional_argument(char const*& value, char const* help_string, char const* name, Required required = Required::Yes);