Source code for help2man.__main__

#!/usr/bin/env python
"""This module can be called by
`python -m <https://docs.python.org/3/library/__main__.html>`_.
"""
from argparse import ArgumentParser, RawDescriptionHelpFormatter
from typing import NoReturn

from . import ASSETS_PATH, DEFAULTS, __version__  # type: ignore
from .external import shtab

EPILOG = (ASSETS_PATH / "txt" / "epilog.txt").read_text()
VERSION = f"""help2man {__version__}
{(ASSETS_PATH / "txt" / "version.txt").read_text()}"""
DESCRIPTION = (ASSETS_PATH / "txt" / "description.txt").read_text().strip()
CMD = {"zsh": "{_command_names -e}"}
ARGS = {"zsh": "_normal"}


[docs]def get_parser() -> ArgumentParser: """Get a parser for unit test and help2man. Provide shell completions. :rtype: ArgumentParser """ parser = ArgumentParser( "help2man", description=DESCRIPTION, epilog=EPILOG, formatter_class=RawDescriptionHelpFormatter, ) parser.add_argument("-V", "--version", version=VERSION, action="version") shtab.add_argument_to(parser) parser.add_argument( "-n", "--name", help="description for the first paragraph, default: %(default)s", ) parser.add_argument( "-s", "--section", help="section number for manual page, default: %(default)s", ) parser.add_argument( "-m", "--manual", help="name of manual. default: %(default)s", ) parser.add_argument( "-S", "--source", help="source of program (FSF, Debian, ...). default: %(default)s", ) parser.add_argument( "-p", "--info-page", help="name of Texinfo manual, default: %(default)s", ) parser.add_argument( "-i", "--include", help="include material from a file", ).complete = shtab.FILE # type: ignore parser.add_argument( "-o", "--output", help="send output", ).complete = shtab.FILE # type: ignore parser.add_argument( "--template", choices=["man", "markdown"], default="man", help="built-in template name. default: %(default)s", ) parser.add_argument( "--template-file", help="template file.", ).complete = shtab.FILE # type: ignore parser.add_argument( "--help-option", help="help option string, default: %(default)s", ) parser.add_argument( "--version-option", help="version option string, default: %(default)s", ) parser.add_argument( "--no-discard-stderr", action="store_true", help="include stderr when parsing option output", ) parser.add_argument( "executable", nargs=1, help="executable program name", ).complete = CMD # type: ignore parser.add_argument( "args", metavar="...", nargs="...", help="executable program arguments", ).complete = ARGS # type: ignore for action in parser._actions: action.default = DEFAULTS.get(action.dest, action.default) return parser
[docs]def main() -> None | NoReturn: """``python -m translate_shell`` call this function. Parse arguments is before init configuration to provide ``--config``. :rtype: None | NoReturn """ parser = get_parser() args = parser.parse_args() from .ui.cli import run run(args)
if __name__ == "__main__": main()