From be6838f97ba8993a3fa03bdd52e026fc47f4f2aa Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sat, 24 Jul 2021 17:24:01 +0200 Subject: [PATCH 1/4] Added logic to handle custom scripts from workspaces --- cpl-workspace.json | 3 ++ scripts/hello_world.py | 1 + src/cpl_cli/cli.py | 9 +++++ src/cpl_cli/command/custom_script_service.py | 39 +++++++++++++++++++ src/cpl_cli/command_handler_service.py | 2 +- .../configuration/workspace_settings.py | 6 +++ .../workspace_settings_name_enum.py | 1 + src/cpl_cli/startup.py | 11 ++++++ .../custom/general/src/general/__init__.py | 0 9 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 scripts/hello_world.py create mode 100644 src/cpl_cli/command/custom_script_service.py delete mode 100644 src/tests/custom/general/src/general/__init__.py diff --git a/cpl-workspace.json b/cpl-workspace.json index 28077a0b..7f294573 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -4,6 +4,9 @@ "Projects": { "cpl": "src/cpl/cpl.json", "cpl_cli": "src/cpl_cli/cpl_cli.json" + }, + "Scripts": { + "hello-world": "python3 scripts/hello_world.py" } } } \ No newline at end of file diff --git a/scripts/hello_world.py b/scripts/hello_world.py new file mode 100644 index 00000000..d3e46f27 --- /dev/null +++ b/scripts/hello_world.py @@ -0,0 +1 @@ +print('Hello World') \ No newline at end of file diff --git a/src/cpl_cli/cli.py b/src/cpl_cli/cli.py index a4e029f7..3b121d9e 100644 --- a/src/cpl_cli/cli.py +++ b/src/cpl_cli/cli.py @@ -1,11 +1,14 @@ +import os from typing import Optional from cpl.application.application_abc import ApplicationABC +from cpl.configuration.console_argument import ConsoleArgument from cpl.configuration.configuration_abc import ConfigurationABC from cpl.console.console import Console from cpl.dependency_injection import ServiceProviderABC from cpl_cli.command.add_service import AddService from cpl_cli.command.build_service import BuildService +from cpl_cli.command.custom_script_service import CustomScriptService from cpl_cli.command.generate_service import GenerateService from cpl_cli.command.install_service import InstallService from cpl_cli.command.new_service import NewService @@ -16,6 +19,7 @@ from cpl_cli.command.uninstall_service import UninstallService from cpl_cli.command.update_service import UpdateService from cpl_cli.command_handler_service import CommandHandler from cpl_cli.command_model import CommandModel +from cpl_cli.configuration.workspace_settings import WorkspaceSettings from cpl_cli.error import Error from cpl_cli.command.help_service import HelpService from cpl_cli.command.version_service import VersionService @@ -48,6 +52,11 @@ class CLI(ApplicationABC): self._command_handler.add_command(CommandModel('update', ['u', 'U'], UpdateService, False, True, True)) self._command_handler.add_command(CommandModel('version', ['v', 'V'], VersionService, False, False, False)) + if os.path.isfile(os.path.join(self._environment.working_directory, 'cpl-workspace.json')): + workspace: Optional[WorkspaceSettings] = self._configuration.get_configuration(WorkspaceSettings) + for script in workspace.scripts: + self._command_handler.add_command(CommandModel(script, [], CustomScriptService, True, True, False)) + self._command_handler.add_command(CommandModel('--help', ['-h', '-H'], HelpService, False, False, False)) self._options.append('--help') diff --git a/src/cpl_cli/command/custom_script_service.py b/src/cpl_cli/command/custom_script_service.py new file mode 100644 index 00000000..c03f6368 --- /dev/null +++ b/src/cpl_cli/command/custom_script_service.py @@ -0,0 +1,39 @@ +import os +import subprocess +import sys + +from cpl.configuration.configuration_abc import ConfigurationABC +from cpl.console.console import Console +from cpl_cli.command_abc import CommandABC +from cpl_cli.configuration.workspace_settings import WorkspaceSettings + + +class CustomScriptService(CommandABC): + + def __init__(self, config: ConfigurationABC, ws: WorkspaceSettings): + """ + Service for CLI scripts + """ + CommandABC.__init__(self) + + self._config = config + self._workspace = ws + + @property + def help_message(self) -> str: + return '' + + def run(self, args: list[str]): + cmd = args[0] if len(args) > 0 else self._config.additional_arguments[0] + + for script in self._workspace.scripts: + if script == cmd: + command = self._workspace.scripts[script] + try: + run_command = [] + for word in command.split(' '): + run_command.append(word) + + subprocess.run(run_command) + except Exception as e: + Console.error(str(e)) diff --git a/src/cpl_cli/command_handler_service.py b/src/cpl_cli/command_handler_service.py index 852345fd..0f53df43 100644 --- a/src/cpl_cli/command_handler_service.py +++ b/src/cpl_cli/command_handler_service.py @@ -57,7 +57,7 @@ class CommandHandler(ABC): workspace: Optional[WorkspaceSettings] = None if os.path.isfile(os.path.join(self._env.working_directory, 'cpl-workspace.json')): - self._config.add_json_file('cpl-workspace.json', optional=True, output=False) + # self._config.add_json_file('cpl-workspace.json', optional=True, output=False) workspace = self._config.get_configuration(WorkspaceSettings) if command.is_project_needed: diff --git a/src/cpl_cli/configuration/workspace_settings.py b/src/cpl_cli/configuration/workspace_settings.py index ff40999a..2b358218 100644 --- a/src/cpl_cli/configuration/workspace_settings.py +++ b/src/cpl_cli/configuration/workspace_settings.py @@ -13,6 +13,7 @@ class WorkspaceSettings(ConfigurationModelABC): self._default_project: Optional[str] = None self._projects: dict[str, str] = {} + self._scripts: dict[str, str] = {} @property def default_project(self) -> str: @@ -22,10 +23,15 @@ class WorkspaceSettings(ConfigurationModelABC): def projects(self) -> dict[str, str]: return self._projects + @property + def scripts(self): + return self._scripts + def from_dict(self, settings: dict): try: self._default_project = settings[WorkspaceSettingsNameEnum.default_project.value] self._projects = settings[WorkspaceSettingsNameEnum.projects.value] + self._scripts = settings[WorkspaceSettingsNameEnum.scripts.value] except Exception as e: Console.error(f'[ ERROR ] [ {__name__} ]: Reading error in {self.__name__} settings') Console.error(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}') diff --git a/src/cpl_cli/configuration/workspace_settings_name_enum.py b/src/cpl_cli/configuration/workspace_settings_name_enum.py index 57bbdd20..7e16f65e 100644 --- a/src/cpl_cli/configuration/workspace_settings_name_enum.py +++ b/src/cpl_cli/configuration/workspace_settings_name_enum.py @@ -5,3 +5,4 @@ class WorkspaceSettingsNameEnum(Enum): default_project = 'DefaultProject' projects = 'Projects' + scripts = 'Scripts' diff --git a/src/cpl_cli/startup.py b/src/cpl_cli/startup.py index 3e0cf9c9..56a70e04 100644 --- a/src/cpl_cli/startup.py +++ b/src/cpl_cli/startup.py @@ -1,4 +1,5 @@ import os +from typing import Optional from cpl.application.startup_abc import StartupABC from cpl.configuration.console_argument import ConsoleArgument @@ -7,6 +8,7 @@ from cpl.dependency_injection.service_collection_abc import ServiceCollectionABC from cpl.dependency_injection.service_provider_abc import ServiceProviderABC from cpl_cli.command.add_service import AddService from cpl_cli.command.build_service import BuildService +from cpl_cli.command.custom_script_service import CustomScriptService from cpl_cli.command.generate_service import GenerateService from cpl_cli.command.install_service import InstallService from cpl_cli.command.new_service import NewService @@ -18,6 +20,7 @@ from cpl_cli.command.update_service import UpdateService from cpl_cli.command_handler_service import CommandHandler from cpl_cli.command.help_service import HelpService from cpl_cli.command.version_service import VersionService +from cpl_cli.configuration.workspace_settings import WorkspaceSettings from cpl_cli.error import Error from cpl_cli.live_server.live_server_service import LiveServerService from cpl_cli.publish.publisher_service import PublisherService @@ -72,6 +75,13 @@ class Startup(StartupABC): self._configuration.add_console_argument(ConsoleArgument('', '--help', ['-h', '-H'], '')) + if os.path.isfile(os.path.join(self._env.working_directory, 'cpl-workspace.json')): + self._configuration.add_json_file('cpl-workspace.json', optional=True, output=False) + workspace: Optional[WorkspaceSettings] = self._configuration.get_configuration(WorkspaceSettings) + for script in workspace.scripts: + self._configuration.add_console_argument( + ConsoleArgument('', script, [], ' ', is_value_token_optional=True)) + self._configuration.add_console_arguments(error=False) return self._configuration @@ -84,6 +94,7 @@ class Startup(StartupABC): self._services.add_transient(AddService) self._services.add_transient(BuildService) + self._services.add_transient(CustomScriptService) self._services.add_transient(GenerateService) self._services.add_transient(HelpService) self._services.add_transient(InstallService) diff --git a/src/tests/custom/general/src/general/__init__.py b/src/tests/custom/general/src/general/__init__.py deleted file mode 100644 index e69de29b..00000000 -- 2.45.1 From 59f6843ea9e546fd21ff38a36a0ff006cde77f31 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sat, 24 Jul 2021 17:25:06 +0200 Subject: [PATCH 2/4] Changed version --- src/cpl_cli/__init__.py | 4 ++-- src/cpl_cli/_templates/__init__.py | 4 ++-- src/cpl_cli/_templates/build/__init__.py | 4 ++-- src/cpl_cli/_templates/generate/__init__.py | 4 ++-- src/cpl_cli/_templates/new/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/console/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/name/__init__.py | 4 ++-- src/cpl_cli/_templates/new/library/source/tests/__init__.py | 4 ++-- src/cpl_cli/_templates/publish/__init__.py | 4 ++-- src/cpl_cli/command/__init__.py | 4 ++-- src/cpl_cli/configuration/__init__.py | 4 ++-- src/cpl_cli/cpl_cli.json | 4 ++-- src/cpl_cli/live_server/__init__.py | 4 ++-- src/cpl_cli/publish/__init__.py | 4 ++-- src/cpl_cli/source_creator/__init__.py | 4 ++-- 20 files changed, 40 insertions(+), 40 deletions(-) diff --git a/src/cpl_cli/__init__.py b/src/cpl_cli/__init__.py index b91477ea..7af49608 100644 --- a/src/cpl_cli/__init__.py +++ b/src/cpl_cli/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.4.0.post3' +__version__ = '2021.10.2' from collections import namedtuple @@ -29,4 +29,4 @@ from .main import main from .startup import Startup VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='4', micro='0.post3') +version_info = VersionInfo(major='2021', minor='10', micro='2') diff --git a/src/cpl_cli/_templates/__init__.py b/src/cpl_cli/_templates/__init__.py index 930f2878..b3432fda 100644 --- a/src/cpl_cli/_templates/__init__.py +++ b/src/cpl_cli/_templates/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.4.0.post3' +__version__ = '2021.10.2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='4', micro='0.post3') +version_info = VersionInfo(major='2021', minor='10', micro='2') diff --git a/src/cpl_cli/_templates/build/__init__.py b/src/cpl_cli/_templates/build/__init__.py index a2b41d9b..2f641018 100644 --- a/src/cpl_cli/_templates/build/__init__.py +++ b/src/cpl_cli/_templates/build/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.build' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.4.0.post3' +__version__ = '2021.10.2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='4', micro='0.post3') +version_info = VersionInfo(major='2021', minor='10', micro='2') diff --git a/src/cpl_cli/_templates/generate/__init__.py b/src/cpl_cli/_templates/generate/__init__.py index a562091e..a625e275 100644 --- a/src/cpl_cli/_templates/generate/__init__.py +++ b/src/cpl_cli/_templates/generate/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.generate' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.4.0.post3' +__version__ = '2021.10.2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='4', micro='0.post3') +version_info = VersionInfo(major='2021', minor='10', micro='2') diff --git a/src/cpl_cli/_templates/new/__init__.py b/src/cpl_cli/_templates/new/__init__.py index c2f84c8e..ded8c8ed 100644 --- a/src/cpl_cli/_templates/new/__init__.py +++ b/src/cpl_cli/_templates/new/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.4.0.post3' +__version__ = '2021.10.2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='4', micro='0.post3') +version_info = VersionInfo(major='2021', minor='10', micro='2') diff --git a/src/cpl_cli/_templates/new/console/__init__.py b/src/cpl_cli/_templates/new/console/__init__.py index 9fcea089..2ed4ea3c 100644 --- a/src/cpl_cli/_templates/new/console/__init__.py +++ b/src/cpl_cli/_templates/new/console/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.4.0.post3' +__version__ = '2021.10.2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='4', micro='0.post3') +version_info = VersionInfo(major='2021', minor='10', micro='2') diff --git a/src/cpl_cli/_templates/new/console/source/__init__.py b/src/cpl_cli/_templates/new/console/source/__init__.py index 5fcfaabd..a567a195 100644 --- a/src/cpl_cli/_templates/new/console/source/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.4.0.post3' +__version__ = '2021.10.2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='4', micro='0.post3') +version_info = VersionInfo(major='2021', minor='10', micro='2') diff --git a/src/cpl_cli/_templates/new/console/source/name/__init__.py b/src/cpl_cli/_templates/new/console/source/name/__init__.py index 4bc87e31..8200673b 100644 --- a/src/cpl_cli/_templates/new/console/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.4.0.post3' +__version__ = '2021.10.2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='4', micro='0.post3') +version_info = VersionInfo(major='2021', minor='10', micro='2') diff --git a/src/cpl_cli/_templates/new/console/source/tests/__init__.py b/src/cpl_cli/_templates/new/console/source/tests/__init__.py index b2048068..551c83cb 100644 --- a/src/cpl_cli/_templates/new/console/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/console/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.console.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.4.0.post3' +__version__ = '2021.10.2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='4', micro='0.post3') +version_info = VersionInfo(major='2021', minor='10', micro='2') diff --git a/src/cpl_cli/_templates/new/library/__init__.py b/src/cpl_cli/_templates/new/library/__init__.py index d227a0c7..2c3ea082 100644 --- a/src/cpl_cli/_templates/new/library/__init__.py +++ b/src/cpl_cli/_templates/new/library/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.4.0.post3' +__version__ = '2021.10.2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='4', micro='0.post3') +version_info = VersionInfo(major='2021', minor='10', micro='2') diff --git a/src/cpl_cli/_templates/new/library/source/__init__.py b/src/cpl_cli/_templates/new/library/source/__init__.py index 7833280b..da92f04f 100644 --- a/src/cpl_cli/_templates/new/library/source/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.4.0.post3' +__version__ = '2021.10.2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='4', micro='0.post3') +version_info = VersionInfo(major='2021', minor='10', micro='2') diff --git a/src/cpl_cli/_templates/new/library/source/name/__init__.py b/src/cpl_cli/_templates/new/library/source/name/__init__.py index 9a2e1d30..f6edde16 100644 --- a/src/cpl_cli/_templates/new/library/source/name/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/name/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.name' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.4.0.post3' +__version__ = '2021.10.2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='4', micro='0.post3') +version_info = VersionInfo(major='2021', minor='10', micro='2') diff --git a/src/cpl_cli/_templates/new/library/source/tests/__init__.py b/src/cpl_cli/_templates/new/library/source/tests/__init__.py index 4082e9d8..509ba102 100644 --- a/src/cpl_cli/_templates/new/library/source/tests/__init__.py +++ b/src/cpl_cli/_templates/new/library/source/tests/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.new.library.source.tests' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.4.0.post3' +__version__ = '2021.10.2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='4', micro='0.post3') +version_info = VersionInfo(major='2021', minor='10', micro='2') diff --git a/src/cpl_cli/_templates/publish/__init__.py b/src/cpl_cli/_templates/publish/__init__.py index 1991202c..ef3ffab3 100644 --- a/src/cpl_cli/_templates/publish/__init__.py +++ b/src/cpl_cli/_templates/publish/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli._templates.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.4.0.post3' +__version__ = '2021.10.2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='4', micro='0.post3') +version_info = VersionInfo(major='2021', minor='10', micro='2') diff --git a/src/cpl_cli/command/__init__.py b/src/cpl_cli/command/__init__.py index 0fef3723..ca2ad5c7 100644 --- a/src/cpl_cli/command/__init__.py +++ b/src/cpl_cli/command/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.command' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.4.0.post3' +__version__ = '2021.10.2' from collections import namedtuple @@ -28,4 +28,4 @@ from .publish_service import PublishService from .version_service import VersionService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='4', micro='0.post3') +version_info = VersionInfo(major='2021', minor='10', micro='2') diff --git a/src/cpl_cli/configuration/__init__.py b/src/cpl_cli/configuration/__init__.py index 5aa3e5fe..856d8c5d 100644 --- a/src/cpl_cli/configuration/__init__.py +++ b/src/cpl_cli/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.configuration' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.4.0.post3' +__version__ = '2021.10.2' from collections import namedtuple @@ -30,4 +30,4 @@ from .workspace_settings import WorkspaceSettings from .workspace_settings_name_enum import WorkspaceSettingsNameEnum VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='4', micro='0.post3') +version_info = VersionInfo(major='2021', minor='10', micro='2') diff --git a/src/cpl_cli/cpl_cli.json b/src/cpl_cli/cpl_cli.json index c8b3eab0..ace3e1c0 100644 --- a/src/cpl_cli/cpl_cli.json +++ b/src/cpl_cli/cpl_cli.json @@ -3,8 +3,8 @@ "Name": "sh_cpl-cli", "Version": { "Major": "2021", - "Minor": "4", - "Micro": "0.post3" + "Minor": "10", + "Micro": "2" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_cli/live_server/__init__.py b/src/cpl_cli/live_server/__init__.py index 31ece612..c414dac3 100644 --- a/src/cpl_cli/live_server/__init__.py +++ b/src/cpl_cli/live_server/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.live_server' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.4.0.post3' +__version__ = '2021.10.2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='4', micro='0.post3') +version_info = VersionInfo(major='2021', minor='10', micro='2') diff --git a/src/cpl_cli/publish/__init__.py b/src/cpl_cli/publish/__init__.py index fbaf36fa..b62f9083 100644 --- a/src/cpl_cli/publish/__init__.py +++ b/src/cpl_cli/publish/__init__.py @@ -15,7 +15,7 @@ __title__ = 'cpl_cli.publish' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.4.0.post3' +__version__ = '2021.10.2' from collections import namedtuple @@ -24,4 +24,4 @@ from .publisher_abc import PublisherABC from .publisher_service import PublisherService VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='4', micro='0.post3') +version_info = VersionInfo(major='2021', minor='10', micro='2') diff --git a/src/cpl_cli/source_creator/__init__.py b/src/cpl_cli/source_creator/__init__.py index bea8dcea..4c8d75f1 100644 --- a/src/cpl_cli/source_creator/__init__.py +++ b/src/cpl_cli/source_creator/__init__.py @@ -15,11 +15,11 @@ __title__ = 'cpl_cli.source_creator' __author__ = 'Sven Heidemann' __license__ = 'MIT' __copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de' -__version__ = '2021.4.0.post3' +__version__ = '2021.10.2' from collections import namedtuple # imports: VersionInfo = namedtuple('VersionInfo', 'major minor micro') -version_info = VersionInfo(major='2021', minor='4', micro='0.post3') +version_info = VersionInfo(major='2021', minor='10', micro='2') -- 2.45.1 From 0bb272d89ba52f1f643a00554c292a589c15b975 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sun, 25 Jul 2021 11:42:46 +0200 Subject: [PATCH 3/4] Added logic to handle pre and post scripts --- src/cpl_cli/cli.py | 4 ++++ src/cpl_cli/command_handler_service.py | 27 ++++++++++++++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/cpl_cli/cli.py b/src/cpl_cli/cli.py index 3b121d9e..0ffc20c3 100644 --- a/src/cpl_cli/cli.py +++ b/src/cpl_cli/cli.py @@ -109,6 +109,10 @@ class CLI(ApplicationABC): for arg in result_args: args.append(arg) + else: + Error.error(f'Unexpected command') + return + if command is None: Error.error(f'Expected command') return diff --git a/src/cpl_cli/command_handler_service.py b/src/cpl_cli/command_handler_service.py index 0f53df43..afb1e26a 100644 --- a/src/cpl_cli/command_handler_service.py +++ b/src/cpl_cli/command_handler_service.py @@ -1,4 +1,5 @@ import os +import subprocess from abc import ABC from typing import Optional @@ -6,6 +7,7 @@ from cpl.configuration.configuration_abc import ConfigurationABC from cpl.console.console import Console from cpl.dependency_injection.service_provider_abc import ServiceProviderABC from cpl.utils.string import String +from cpl_cli.command.custom_script_service import CustomScriptService from cpl_cli.configuration.workspace_settings import WorkspaceSettings from cpl_cli.error import Error from cpl_cli.command_model import CommandModel @@ -57,7 +59,6 @@ class CommandHandler(ABC): workspace: Optional[WorkspaceSettings] = None if os.path.isfile(os.path.join(self._env.working_directory, 'cpl-workspace.json')): - # self._config.add_json_file('cpl-workspace.json', optional=True, output=False) workspace = self._config.get_configuration(WorkspaceSettings) if command.is_project_needed: @@ -111,5 +112,27 @@ class CommandHandler(ABC): self._config.add_json_file(project_json, optional=True, output=False) - self._services.get_service(command.command).run(args) + # pre scripts Console.write('\n') + self._handle_pre_or_post_scripts(True, workspace, command) + self._services.get_service(command.command).run(args) + # post scripts + Console.write('\n\n') + self._handle_pre_or_post_scripts(False, workspace, command) + Console.write('\n') + + def _handle_pre_or_post_scripts(self, pre: bool, workspace: WorkspaceSettings, command: CommandModel): + script_type = 'pre-' if pre else 'post-' + if workspace is not None and len(workspace.scripts) > 0: + for script in workspace.scripts: + if script_type in script and script.split(script_type)[1] == command.name: + script_name = script + script_cmd = workspace.scripts[script] + if script_cmd in workspace.scripts: + script_name = workspace.scripts[script] + + css: CustomScriptService = self._services.get_service(CustomScriptService) + if css is None: + continue + + css.run([script_name]) -- 2.45.1 From 51efe973e8fa39b1dc7f9270e1d6aaba54a42b0c Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sun, 25 Jul 2021 12:00:12 +0200 Subject: [PATCH 4/4] Improved logic to handle pre and post scripts --- cpl-workspace.json | 1 - src/cpl_cli/command_handler_service.py | 1 - 2 files changed, 2 deletions(-) diff --git a/cpl-workspace.json b/cpl-workspace.json index 7f294573..5ac236f3 100644 --- a/cpl-workspace.json +++ b/cpl-workspace.json @@ -6,7 +6,6 @@ "cpl_cli": "src/cpl_cli/cpl_cli.json" }, "Scripts": { - "hello-world": "python3 scripts/hello_world.py" } } } \ No newline at end of file diff --git a/src/cpl_cli/command_handler_service.py b/src/cpl_cli/command_handler_service.py index afb1e26a..128e796c 100644 --- a/src/cpl_cli/command_handler_service.py +++ b/src/cpl_cli/command_handler_service.py @@ -1,5 +1,4 @@ import os -import subprocess from abc import ABC from typing import Optional -- 2.45.1