From cce894b9429e6c871b92c03dd585404d7ba5117c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn-Michael=20Miehe?= Date: Wed, 19 Jan 2022 15:36:41 +0100 Subject: [PATCH] update command import pattern --- kiwi_scp/commands/cmd_update.py | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/kiwi_scp/commands/cmd_update.py b/kiwi_scp/commands/cmd_update.py index 1330ca5..6b18fe0 100644 --- a/kiwi_scp/commands/cmd_update.py +++ b/kiwi_scp/commands/cmd_update.py @@ -4,6 +4,10 @@ import click from click import get_current_context from .cmd import KiwiCommandType, KiwiCommand +from .cmd_build import BuildCommand +from .cmd_down import DownCommand +from .cmd_pull import PullCommand +from .cmd_up import UpCommand from .decorators import kiwi_command from ..instance import Instance from ..project import Project @@ -24,6 +28,20 @@ class UpdateCommand(KiwiCommand): type = KiwiCommandType.SERVICES enabled_only = True + @classmethod + def run_for_instance(cls, instance: Instance, force: bool = None) -> None: + if not force: + if not KiwiCommand.danger_confirm( + "This will update the entire instance at once.", + "", + "This may not be what you intended, because:", + " - Updates may take a long time", + " - Updates may break beloved functionality", + ): + return + + super().run_for_instance(instance) + @classmethod def run_for_filtered_services(cls, instance: Instance, project: Project, services: Services, new_service_names: List[str], **kwargs) -> None: @@ -35,14 +53,13 @@ class UpdateCommand(KiwiCommand): ): return - from .cmd_build import BuildCommand - from .cmd_down import DownCommand - from .cmd_pull import PullCommand - from .cmd_up import UpCommand - ctx = get_current_context() + assert isinstance(BuildCommand, click.Command) ctx.forward(BuildCommand) + assert isinstance(PullCommand, click.Command) ctx.forward(PullCommand) # TODO conf-copy + assert isinstance(DownCommand, click.Command) ctx.forward(DownCommand) + assert isinstance(UpCommand, click.Command) ctx.forward(UpCommand)