From 8ddfd35a82b3fcae5f29a7f854fec246c434b172 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Tue, 30 Mar 2021 09:47:47 +0200 Subject: [PATCH] Improved generate command --- src/cpl_cli/command/generate_service.py | 14 ++++++++ .../templates/generate/init_template.py | 32 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 src/cpl_cli/templates/generate/init_template.py diff --git a/src/cpl_cli/command/generate_service.py b/src/cpl_cli/command/generate_service.py index 21c8b61a..7a084e6e 100644 --- a/src/cpl_cli/command/generate_service.py +++ b/src/cpl_cli/command/generate_service.py @@ -6,6 +6,7 @@ from cpl.console.foreground_color_enum import ForegroundColorEnum from cpl.console.console import Console from cpl.utils.string import String from cpl_cli.command_abc import CommandABC +from cpl_cli.templates.generate.init_template import InitTemplate from cpl_cli.templates.generate.abc_template import ABCTemplate from cpl_cli.templates.generate.class_template import ClassTemplate from cpl_cli.templates.generate.configmodel_template import ConfigModelTemplate @@ -106,6 +107,19 @@ class GenerateService(CommandABC): file_path = os.path.join(self._env.working_directory, template.path, template.name) if not os.path.isdir(os.path.dirname(file_path)): os.makedirs(os.path.dirname(file_path)) + directory = '' + for subdir in template.path.split('/'): + directory = os.path.join(directory, subdir) + if subdir != 'src': + file = InitTemplate(class_name, schematic, self._schematics[schematic]["Upper"], rel_path) + Console.spinner( + f'Creating {os.path.abspath(directory)}/{file.name}', + self._create_file, + os.path.join(os.path.abspath(directory), file.name), + file.value, + text_foreground_color=ForegroundColorEnum.green, + spinner_foreground_color=ForegroundColorEnum.cyan + ) if os.path.isfile(file_path): Console.error(f'{String.first_to_upper(schematic)} already exists!') diff --git a/src/cpl_cli/templates/generate/init_template.py b/src/cpl_cli/templates/generate/init_template.py new file mode 100644 index 00000000..59c0f0fa --- /dev/null +++ b/src/cpl_cli/templates/generate/init_template.py @@ -0,0 +1,32 @@ +import textwrap +from string import Template + +from cpl.utils.string import String +from cpl_cli.templates.template_file_abc import TemplateFileABC + + +class InitTemplate(TemplateFileABC): + + def __init__(self, name: str, schematic: str, schematic_upper: str, path: str): + TemplateFileABC.__init__(self) + + self._name = f'__init__.py' + self._class_name = f'{String.first_to_upper(name)}{schematic_upper}' + self._path = path + self._value = textwrap.dedent("""\ + # imports + """) + + @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 + )