Compression,
Config,
ConfigFeature,
+ DocFormat,
JsonEncoder,
KeySourceType,
ManifestFormat,
return print_completion(args, resources=resources)
if args.verb == Verb.documentation:
- return show_docs(args, resources=resources)
+ manual = args.cmdline[0] if args.cmdline else "mkosi"
+ formats: list[DocFormat] = [args.doc_format] if args.doc_format != DocFormat.auto else DocFormat.all()
+ return show_docs(manual, formats, resources=resources, pager=args.pager)
if args.verb == Verb.genkey:
return generate_key_cert_pair(args)
pandoc = enum.auto()
system = enum.auto()
+ @classmethod
+ def all(cls) -> list["DocFormat"]:
+ # this excludes auto and encodes the order in which these should be
+ # checked when searching for docs
+ return [cls.man, cls.pandoc, cls.markdown, cls.system]
+
class Bootloader(StrEnum):
none = enum.auto()
import subprocess
from pathlib import Path
-from mkosi.config import Args, DocFormat
+from mkosi.config import DocFormat
from mkosi.log import die
from mkosi.pager import page
from mkosi.run import find_binary, run
-def show_docs(args: Args, *, resources: Path) -> None:
- if args.doc_format == DocFormat.auto:
- formats = [DocFormat.man, DocFormat.pandoc, DocFormat.markdown, DocFormat.system]
- else:
- formats = [args.doc_format]
-
- manual = args.cmdline[0] if args.cmdline else "mkosi"
-
+def show_docs(manual: str, formats: list[DocFormat], *, resources: Path, pager: bool = True) -> None:
while formats:
form = formats.pop(0)
try:
run(["man", "--local-file", "-"], input=pandoc.stdout)
return
elif form == DocFormat.markdown:
- page((resources / f"man/{manual}.md").read_text(), args.pager)
+ page((resources / f"man/{manual}.md").read_text(), pager)
return
elif form == DocFormat.system:
run(["man", manual], log=False)
import tempfile
from pathlib import Path
-from mkosi.config import OutputFormat
+import mkosi.resources
+from mkosi.config import DocFormat, OutputFormat
+from mkosi.documentation import show_docs
from mkosi.log import log_setup
from mkosi.run import find_binary, run, uncaught_exception_handler
from mkosi.sandbox import __version__
from mkosi.types import PathString
+from mkosi.util import resource_path
@uncaught_exception_handler()
action="store_true",
default=False,
)
+ parser.add_argument(
+ "-D", "--show-documentation",
+ help="Show the man page",
+ action="store_true",
+ default=False,
+ )
parser.add_argument(
"--version",
action="version",
args = parser.parse_args()
+ if args.show_documentation:
+ with resource_path(mkosi.resources) as r:
+ show_docs("mkosi-initrd", DocFormat.all(), resources=r)
+ return
+
cmdline: list[PathString] = [
"mkosi",
"--force",