diff --git a/src/cpl_cli/command/generate.py b/src/cpl_cli/command/generate.py index 0afe9b51..b0dfc00f 100644 --- a/src/cpl_cli/command/generate.py +++ b/src/cpl_cli/command/generate.py @@ -12,6 +12,7 @@ from cpl_cli.templates.generate.class_template import ClassTemplate from cpl_cli.templates.generate.configmodel_template import ConfigModelTemplate from cpl_cli.templates.generate.enum_template import EnumTemplate from cpl_cli.templates.generate.service_template import ServiceTemplate +from cpl_cli.templates.generate.thread_template import ThreadTemplate from cpl_cli.templates.template_file_abc import TemplateFileABC @@ -40,6 +41,10 @@ class Generate(CommandABC): "settings": { "Upper": "Settings", "Template": ConfigModelTemplate + }, + "thread": { + "Upper": "Thread", + "Template": ThreadTemplate } } diff --git a/src/cpl_cli/startup.py b/src/cpl_cli/startup.py index ce4f4125..641667e0 100644 --- a/src/cpl_cli/startup.py +++ b/src/cpl_cli/startup.py @@ -48,7 +48,8 @@ class Startup(StartupABC): ConsoleArgument('', 'class', ['c', 'C'], ' '), ConsoleArgument('', 'enum', ['e', 'E'], ' '), ConsoleArgument('', 'service', ['s', 'S'], ' '), - ConsoleArgument('', 'settings', ['st', 'ST'], ' ') + ConsoleArgument('', 'settings', ['st', 'ST'], ' '), + ConsoleArgument('', 'thread', ['t', 't'], ' ') ])) self._configuration.add_console_argument(ConsoleArgument('', 'help', ['h', 'H'], '')) self._configuration.add_console_argument(ConsoleArgument('', 'new', ['n', 'N'], '', [ diff --git a/src/cpl_cli/templates/generate/thread_template.py b/src/cpl_cli/templates/generate/thread_template.py new file mode 100644 index 00000000..78c68372 --- /dev/null +++ b/src/cpl_cli/templates/generate/thread_template.py @@ -0,0 +1,41 @@ +import textwrap +from string import Template + +from cpl.utils.string import String +from cpl_cli.templates.template_file_abc import TemplateFileABC + + +class ThreadTemplate(TemplateFileABC): + + def __init__(self, name: str, schematic: str, schematic_upper: str, path: str): + TemplateFileABC.__init__(self) + + self._name = f'{String.convert_to_snake_case(name)}_{schematic}.py' + self._class_name = f'{String.first_to_upper(name)}{schematic_upper}' + self._path = path + self._value = textwrap.dedent("""\ + import threading + + + class $Name(threading.Thread): + + def __init__(self): + threading.Thread.__init__(self) + + def run(self) -> None: + pass + """) + + @property + def name(self) -> str: + return self._name + + @property + def path(self) -> str: + return self._path + + @property + def value(self) -> str: + return Template(self._value).substitute( + Name=self._class_name + )