From 284ebe1b11d88c248e6f72e5eacad25a23732d78 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sun, 11 Apr 2021 11:12:39 +0200 Subject: [PATCH] Added logic to cpl cli to change cwd only when wanted --- src/cpl_cli/cli.py | 20 ++++++++++---------- src/cpl_cli/command/generate_service.py | 4 +++- src/cpl_cli/command_handler_service.py | 7 ++++--- src/cpl_cli/command_model.py | 12 +++++++++--- 4 files changed, 26 insertions(+), 17 deletions(-) diff --git a/src/cpl_cli/cli.py b/src/cpl_cli/cli.py index 8547844e..8a659df2 100644 --- a/src/cpl_cli/cli.py +++ b/src/cpl_cli/cli.py @@ -32,16 +32,16 @@ class CLI(ApplicationABC): def configure(self): self._command_handler: CommandHandler = self._services.get_service(CommandHandler) - self._command_handler.add_command(CommandModel('build', ['h', 'B'], BuildService, True)) - self._command_handler.add_command(CommandModel('generate', ['g', 'G'], GenerateService, True)) - self._command_handler.add_command(CommandModel('help', ['h', 'H'], HelpService, False)) - self._command_handler.add_command(CommandModel('install', ['i', 'I'], InstallService, True)) - self._command_handler.add_command(CommandModel('new', ['n', 'N'], NewService, False)) - self._command_handler.add_command(CommandModel('publish', ['p', 'P'], PublishService, True)) - self._command_handler.add_command(CommandModel('start', ['s', 'S'], StartService, True)) - self._command_handler.add_command(CommandModel('uninstall', ['ui', 'UI'], UninstallService, True)) - self._command_handler.add_command(CommandModel('update', ['u', 'U'], UpdateService, True)) - self._command_handler.add_command(CommandModel('version', ['v', 'V'], VersionService, False)) + self._command_handler.add_command(CommandModel('build', ['h', 'B'], BuildService, True, True)) + self._command_handler.add_command(CommandModel('generate', ['g', 'G'], GenerateService, True, False)) + self._command_handler.add_command(CommandModel('help', ['h', 'H'], HelpService, False, False)) + self._command_handler.add_command(CommandModel('install', ['i', 'I'], InstallService, True, True)) + self._command_handler.add_command(CommandModel('new', ['n', 'N'], NewService, False, True)) + self._command_handler.add_command(CommandModel('publish', ['p', 'P'], PublishService, True, True)) + self._command_handler.add_command(CommandModel('start', ['s', 'S'], StartService, True, True)) + self._command_handler.add_command(CommandModel('uninstall', ['ui', 'UI'], UninstallService, True, True)) + self._command_handler.add_command(CommandModel('update', ['u', 'U'], UpdateService, True, True)) + self._command_handler.add_command(CommandModel('version', ['v', 'V'], VersionService, False, False)) def main(self): """ diff --git a/src/cpl_cli/command/generate_service.py b/src/cpl_cli/command/generate_service.py index e7e32652..770ae406 100644 --- a/src/cpl_cli/command/generate_service.py +++ b/src/cpl_cli/command/generate_service.py @@ -102,7 +102,9 @@ class GenerateService(CommandABC): rel_path = '/'.join(parts[:-1]) class_name = parts[len(parts) - 1] - if 'src' not in name: + Console.write_line(rel_path) + + if 'src' not in rel_path: rel_path = f'src/{rel_path}' template = template(class_name, schematic, self._schematics[schematic]["Upper"], rel_path) diff --git a/src/cpl_cli/command_handler_service.py b/src/cpl_cli/command_handler_service.py index 26d32f5e..413e0ee9 100644 --- a/src/cpl_cli/command_handler_service.py +++ b/src/cpl_cli/command_handler_service.py @@ -94,9 +94,10 @@ class CommandHandler(ABC): project_json = os.path.join(self._env.working_directory, project_json) - self._env.set_working_directory( - os.path.join(self._env.working_directory, os.path.dirname(project_json)) - ) + if command.change_cwd: + self._env.set_working_directory( + os.path.join(self._env.working_directory, os.path.dirname(project_json)) + ) self._config.add_json_file(project_json, optional=True, output=False) diff --git a/src/cpl_cli/command_model.py b/src/cpl_cli/command_model.py index 85afe007..42e18274 100644 --- a/src/cpl_cli/command_model.py +++ b/src/cpl_cli/command_model.py @@ -5,11 +5,13 @@ from cpl_cli.command_abc import CommandABC class CommandModel: - def __init__(self, name: str, aliases: list[str], command: Callable[CommandABC], is_project_needed: bool): + def __init__(self, name: str, aliases: list[str], command: Callable[CommandABC], is_project_needed: bool, + change_cwd: bool): self._name = name self._aliases = aliases self._command = command self._is_project_needed = is_project_needed + self._change_cwd = change_cwd @property def name(self) -> str: @@ -18,11 +20,15 @@ class CommandModel: @property def aliases(self) -> list[str]: return self._aliases - + @property def command(self) -> Callable[CommandABC]: return self._command - + @property def is_project_needed(self) -> bool: return self._is_project_needed + + @property + def change_cwd(self) -> bool: + return self._change_cwd