From ca450d667ac03fee679ac83b0cf00190ba9f739e Mon Sep 17 00:00:00 2001 From: Patrick Kanzler Date: Mon, 25 Sep 2023 00:18:27 +0200 Subject: [PATCH] autodocument argparser --- doc/conf.py | 1 + doc/index.rst | 1 + doc/requirements.txt | 1 + doc/user/cli-user.rst | 10 ++++++++++ src/escpos/cli.py | 19 +++++++++++++------ tox.ini | 1 + 6 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 doc/user/cli-user.rst diff --git a/doc/conf.py b/doc/conf.py index b3f1fb5..8cccf44 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -43,6 +43,7 @@ extensions = [ "sphinx.ext.graphviz", "sphinx.ext.inheritance_diagram", "sphinx.ext.imgconverter", + "sphinxarg.ext", "sphinxcontrib.datatemplates", "sphinxcontrib.spelling", ] diff --git a/doc/index.rst b/doc/index.rst index 65021fb..122fb19 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -24,6 +24,7 @@ are relevant to the user of this library. user/printers user/raspi user/usage + user/cli-user user/barcode Printer profiles diff --git a/doc/requirements.txt b/doc/requirements.txt index ff1337b..3ad476b 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -11,5 +11,6 @@ python-barcode>=0.11.0,<1 importlib-metadata importlib_resources sphinxcontrib.datatemplates +sphinx-argparse sphinx-autodoc-typehints pycups diff --git a/doc/user/cli-user.rst b/doc/user/cli-user.rst new file mode 100644 index 0000000..1893fa7 --- /dev/null +++ b/doc/user/cli-user.rst @@ -0,0 +1,10 @@ +CLI +=== + +:Last Reviewed: 2023-09-25 + +Documentation of the command line interface, callable with ``python-escpos``. + +.. argparse:: + :ref: escpos.cli.generate_parser + :prog: python-escpos diff --git a/src/escpos/cli.py b/src/escpos/cli.py index c44c764..97f1dcc 100644 --- a/src/escpos/cli.py +++ b/src/escpos/cli.py @@ -487,12 +487,8 @@ def print_extended_information() -> None: ) -def main(): - """Handle main entry point of CLI script. - - Handles loading of configuration and creating and processing of command - line arguments. Called when run from a CLI. - """ +def generate_parser() -> argparse.ArgumentParser: + """Generate an argparse parser.""" parser = argparse.ArgumentParser( description="CLI for python-escpos", epilog="Printer configuration is defined in the python-escpos config" @@ -563,6 +559,17 @@ def main(): ) parser_command_version_extended.set_defaults(version_extended=True) + return parser + + +def main(): + """Handle main entry point of CLI script. + + Handles loading of configuration and creating and processing of command + line arguments. Called when run from a CLI. + """ + parser = generate_parser() + # hook in argcomplete if "argcomplete" in globals(): argcomplete.autocomplete(parser) diff --git a/tox.ini b/tox.ini index 6a60800..08922e7 100644 --- a/tox.ini +++ b/tox.ini @@ -33,6 +33,7 @@ changedir = doc deps = sphinx>=7.2.3 setuptools_scm python-barcode + sphinx-argparse sphinxcontrib-spelling>=8.0.0 sphinxcontrib.datatemplates sphinx-autodoc-typehints