flatten,
)
from mkosi.log import MkosiPrinter, die
+from mkosi.pager import page
__version__ = "14"
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(
)
parser.add_argument(
"-h", "--help",
- action="help",
+ action=PagerHelpAction,
help=argparse.SUPPRESS,
)
parser.add_argument(
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)
# 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)