diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 36ed5e6..aac7d57 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -18,7 +18,8 @@ I have: **Printer:** Manufacturer Model XVI +Starting with python-escpos version 3.0, please replace the information below +with the output of `python-escpos version_extended`. --> **python-escpos version:** 0.0.0 **python version:** 0.0 diff --git a/src/escpos/cli.py b/src/escpos/cli.py index 59b195e..c44c764 100644 --- a/src/escpos/cli.py +++ b/src/escpos/cli.py @@ -11,6 +11,7 @@ It requires you to have a configuration file. See documentation for details. import argparse +import platform try: import argcomplete @@ -21,7 +22,9 @@ import sys import six -from . import config, version +from . import config +from . import printer as escpos_printer_module +from . import version # Must be defined before it's used in DEMO_FUNCTIONS @@ -454,6 +457,36 @@ ESCPOS_COMMANDS = [ ] +def print_extended_information() -> None: + print(f"* python-escpos version: `{version.version}`") + print( + f"* python version: `{platform.python_implementation()} v{platform.python_version()}`" + ) + print(f"* platform: `{platform.platform()}`") + print( + f"* printer driver `USB` is usable: `{escpos_printer_module.Usb.is_usable()}`" + ) + print( + f"* printer driver `File` is usable: `{escpos_printer_module.File.is_usable()}`" + ) + print( + f"* printer driver `Network` is usable: `{escpos_printer_module.Network.is_usable()}`" + ) + print( + f"* printer driver `Serial` is usable: `{escpos_printer_module.Serial.is_usable()}`" + ) + print(f"* printer driver `LP` is usable: `{escpos_printer_module.LP.is_usable()}`") + print( + f"* printer driver `Dummy` is usable: `{escpos_printer_module.Dummy.is_usable()}`" + ) + print( + f"* printer driver `CupsPrinter` is usable: `{escpos_printer_module.CupsPrinter.is_usable()}`" + ) + print( + f"* printer driver `Win32Raw` is usable: `{escpos_printer_module.Win32Raw.is_usable()}`" + ) + + def main(): """Handle main entry point of CLI script. @@ -520,10 +553,16 @@ def main(): ) parser_command_version = command_subparsers.add_parser( - "version", help="Print the version of python-escpos" + "version", help="Print the version information of python-escpos" ) parser_command_version.set_defaults(version=True) + parser_command_version_extended = command_subparsers.add_parser( + "version_extended", + help="Print the extended version information of python-escpos (for bug reports)", + ) + parser_command_version_extended.set_defaults(version_extended=True) + # hook in argcomplete if "argcomplete" in globals(): argcomplete.autocomplete(parser) @@ -543,6 +582,11 @@ def main(): print(version.version) sys.exit() + print_version_extended = command_arguments.pop("version_extended", None) + if print_version_extended: + print_extended_information() + sys.exit() + # If there was a config path passed, grab it config_path = command_arguments.pop("config", None) diff --git a/test/test_cli.py b/test/test_cli.py index cd2828e..7a5fc0d 100644 --- a/test/test_cli.py +++ b/test/test_cli.py @@ -81,6 +81,12 @@ class TestCLI: assert not result.stderr assert escpos.__version__ == result.stdout.strip() + def test_cli_version_extended(self): + """Test the extended version information""" + result = self.env.run("python-escpos", "version_extended") + assert not result.stderr + # TODO test output + @pytest.mark.skip( reason="disable this test as it is not that easy anymore to predict the outcome of this call" )