Преглед изворни кода

LibCore+Base: Hide empty options sections in manpages

sin-ack пре 3 година
родитељ
комит
8214a935ab
2 измењених фајлова са 13 додато и 5 уклоњено
  1. 0 3
      Base/usr/share/man/man1/fortune.md
  2. 13 2
      Userland/Libraries/LibCore/ArgsParser.cpp

+ 0 - 3
Base/usr/share/man/man1/fortune.md

@@ -12,9 +12,6 @@ $ fortune [path]
 
 
 Open a fortune cookie, receive a free quote for the day!
 Open a fortune cookie, receive a free quote for the day!
 
 
-## Options:
-
-
 ## Arguments:
 ## Arguments:
 
 
 * `path`: Path to JSON file with quotes (/res/fortunes.json by default)
 * `path`: Path to JSON file with quotes (/res/fortunes.json by default)

+ 13 - 2
Userland/Libraries/LibCore/ArgsParser.cpp

@@ -299,10 +299,21 @@ void ArgsParser::print_usage_markdown(FILE* file, char const* argv0)
         outln(file, "\n## Description\n\n{}", m_general_help);
         outln(file, "\n## Description\n\n{}", m_general_help);
     }
     }
 
 
-    if (!m_options.is_empty())
+    auto should_display_option = [](Option& opt) {
+        return !(opt.hide_mode == OptionHideMode::Markdown || opt.hide_mode == OptionHideMode::CommandLineAndMarkdown);
+    };
+
+    size_t options_to_display = 0;
+    for (auto& opt : m_options) {
+        if (!should_display_option(opt))
+            continue;
+        options_to_display++;
+    }
+
+    if (options_to_display > 0)
         outln(file, "\n## Options:\n");
         outln(file, "\n## Options:\n");
     for (auto& opt : m_options) {
     for (auto& opt : m_options) {
-        if (opt.hide_mode == OptionHideMode::Markdown || opt.hide_mode == OptionHideMode::CommandLineAndMarkdown)
+        if (!should_display_option(opt))
             continue;
             continue;
 
 
         auto print_argument = [&]() {
         auto print_argument = [&]() {