]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
mkosi: use pager for --help
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sun, 16 Apr 2023 17:14:02 +0000 (19:14 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 17 Apr 2023 08:29:54 +0000 (10:29 +0200)
mkosi/config.py
mkosi/pager.py

index df150954fa72337f127be91f8e7c8bb996ec26b7..9b631474fedb9d09d74c57b3c832b780072a7596 100644 (file)
@@ -20,6 +20,7 @@ from mkosi.backend import (
     flatten,
 )
 from mkosi.log import MkosiPrinter, die
+from mkosi.pager import page
 
 __version__ = "14"
 
@@ -291,6 +292,18 @@ def config_make_action(settings: Sequence[MkosiConfigSetting]) -> Type[argparse.
     return MkosiAction
 
 
+class PagerHelpAction(argparse._HelpAction):
+    def __call__(
+        self,
+        parser: argparse.ArgumentParser,
+        namespace: argparse.Namespace,
+        values: Union[str, Sequence[Any], None] = None,
+        option_string: Optional[str] = None
+    ) -> None:
+        page(parser.format_help(), namespace.pager)
+        parser.exit()
+
+
 class MkosiConfigParser:
     SETTINGS = (
         MkosiConfigSetting(
@@ -793,7 +806,7 @@ class MkosiConfigParser:
         )
         parser.add_argument(
             "-h", "--help",
-            action="help",
+            action=PagerHelpAction,
             help=argparse.SUPPRESS,
         )
         parser.add_argument(
@@ -1311,8 +1324,7 @@ class MkosiConfigParser:
         argparser.parse_args(args, namespace)
 
         if namespace.verb == Verb.help:
-            argparser.print_help()
-            argparser.exit()
+            PagerHelpAction.__call__(None, argparser, namespace)  # type: ignore
 
         if "directory" not in namespace:
             setattr(namespace, "directory", None)
index 6131671de94ea25c44235176c57e9f3fa1e237c2..8ae064d5b5ac5d65b3d6d45e4c3c83db7a719b57 100644 (file)
@@ -12,7 +12,8 @@ def page(text: str, enabled: Optional[bool]) -> None:
         # X: do not clear screen
         # M: verbose prompt
         # K: quit on ^C
-        os.environ["LESS"] = os.getenv("MKOSI_LESS", "FXMK")
+        # R: allow rich formatting
+        os.environ["LESS"] = os.getenv("MKOSI_LESS", "FXMKR")
         pydoc.pager(text)
     else:
         print(text)