diff --git a/src/cpl_cli/command/new_service.py b/src/cpl_cli/command/new_service.py index 940d276a..73f50ced 100644 --- a/src/cpl_cli/command/new_service.py +++ b/src/cpl_cli/command/new_service.py @@ -44,6 +44,7 @@ class NewService(CommandABC): self._project_json = {} self._name: str = '' + self._rel_path: str = '' self._schematic: ProjectTypeEnum = ProjectTypeEnum.console self._use_nothing: bool = False self._use_application_api: bool = False @@ -83,9 +84,10 @@ class NewService(CommandABC): for name in schematics: Console.write(f'\n\t{name} ') - def _create_project_settings(self, name: str): + def _create_project_settings(self): + self._rel_path = os.path.dirname(self._name) self._project_dict = { - ProjectSettingsNameEnum.name.value: name, + ProjectSettingsNameEnum.name.value: os.path.basename(self._name), ProjectSettingsNameEnum.version.value: { VersionSettingsNameEnum.major.value: '0', VersionSettingsNameEnum.minor.value: '0', @@ -113,15 +115,11 @@ class NewService(CommandABC): self._project.from_dict(self._project_dict) def _create_build_settings(self): - main = f'{String.convert_to_snake_case(self._project.name)}.main' - if self._schematic == ProjectTypeEnum.library.value: - main = f'{String.convert_to_snake_case(self._project.name)}.main' - self._build_dict = { BuildSettingsNameEnum.project_type.value: self._schematic, BuildSettingsNameEnum.source_path.value: '', BuildSettingsNameEnum.output_path.value: '../../dist', - BuildSettingsNameEnum.main.value: main, + BuildSettingsNameEnum.main.value: f'{String.convert_to_snake_case(self._project.name)}.main', BuildSettingsNameEnum.entry_point.value: self._project.name, BuildSettingsNameEnum.include_package_data.value: False, BuildSettingsNameEnum.included.value: [], @@ -151,15 +149,12 @@ class NewService(CommandABC): :return: """ if self._workspace is None: - project_path = os.path.join(self._env.working_directory, self._project.name) + project_path = os.path.join(self._env.working_directory, self._rel_path, self._project.name) else: - project_path = os.path.join( - self._env.working_directory, - 'src', - String.convert_to_snake_case(self._project.name) - ) + project_path = os.path.join(self._env.working_directory, 'src', self._rel_path, String.convert_to_snake_case(self._project.name)) if os.path.isdir(project_path) and len(os.listdir(project_path)) > 0: + Console.write_line(project_path) Console.error('Project path is not empty\n') return None @@ -195,7 +190,7 @@ class NewService(CommandABC): :param args: :return: """ - self._create_project_settings(self._name) + self._create_project_settings() self._create_build_settings() self._create_project_json() path = self._get_project_path() @@ -203,6 +198,9 @@ class NewService(CommandABC): return self._get_project_information() + project_name = self._project.name + if self._rel_path != '': + project_name = f'{self._rel_path}/{project_name}' try: ConsoleBuilder.build( path, @@ -210,7 +208,7 @@ class NewService(CommandABC): self._use_startup, self._use_service_providing, self._use_async, - self._project.name, + project_name, self._project_json, self._workspace ) @@ -223,7 +221,7 @@ class NewService(CommandABC): :param args: :return: """ - self._create_project_settings(self._name) + self._create_project_settings() self._create_build_settings() self._create_project_json() path = self._get_project_path() @@ -231,12 +229,15 @@ class NewService(CommandABC): return self._get_project_information(is_unittest=True) + project_name = self._project.name + if self._rel_path != '': + project_name = f'{self._rel_path}/{project_name}' try: UnittestBuilder.build( path, self._use_application_api, self._use_async, - self._project.name, + project_name, self._project_json, self._workspace ) @@ -249,7 +250,7 @@ class NewService(CommandABC): :param args: :return: """ - self._create_project_settings(self._name) + self._create_project_settings() self._create_build_settings() self._create_project_json() path = self._get_project_path() @@ -257,6 +258,9 @@ class NewService(CommandABC): return self._get_project_information() + project_name = self._project.name + if self._rel_path != '': + project_name = f'{self._rel_path}/{project_name}' try: LibraryBuilder.build( path, @@ -264,7 +268,7 @@ class NewService(CommandABC): self._use_startup, self._use_service_providing, self._use_async, - self._project.name, + project_name, self._project_json, self._workspace ) diff --git a/unittests/unittests_cli/new_test_case.py b/unittests/unittests_cli/new_test_case.py index 3013e028..94bb652c 100644 --- a/unittests/unittests_cli/new_test_case.py +++ b/unittests/unittests_cli/new_test_case.py @@ -60,8 +60,7 @@ class NewTestCase(unittest.TestCase): project_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, workspace_name, f'src/{directory}', String.convert_to_snake_case(name))) self.assertTrue(os.path.exists(project_path)) project_file = os.path.join(project_path, f'{name}.json') - self.assertTrue(project_file) - project_json = {} + self.assertTrue(os.path.exists(project_file)) with open(project_file, 'r', encoding='utf-8') as cfg: # load json project_json = json.load(cfg)