zrb 0.26.0__py3-none-any.whl → 0.27.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
zrb/__init__.py CHANGED
@@ -10,7 +10,6 @@ from zrb.task.any_task_event_handler import (
10
10
  OnTriggered,
11
11
  OnWaiting,
12
12
  )
13
- from zrb.task.base_remote_cmd_task import BaseRemoteCmdTask, RemoteConfig
14
13
  from zrb.task.checker import Checker
15
14
  from zrb.task.cmd_task import CmdTask
16
15
  from zrb.task.decorator import python_task
@@ -69,8 +68,6 @@ assert CmdTask
69
68
  assert DockerComposeTask
70
69
  assert DockerComposeStartTask
71
70
  assert ServiceConfig
72
- assert BaseRemoteCmdTask
73
- assert RemoteConfig
74
71
  assert RemoteCmdTask
75
72
  assert RsyncTask
76
73
  assert Notifier
@@ -0,0 +1,15 @@
1
+ log_info() {
2
+ echo -e "🤖 \e[0;33m${1}\e[0;0m"
3
+ }
4
+
5
+ log_error() {
6
+ echo -e "\e[1;31m${1}\e[0;0m" >&2
7
+ }
8
+
9
+ log_conflict_error() {
10
+ log_error "Action blocked by unresolved conflicts."
11
+ log_error "You need to resolve the conflict(s) and commit the changes."
12
+ log_error "Unresolved conflict(s) detected:"
13
+ log_error "$1"
14
+ }
15
+
@@ -2,8 +2,8 @@ import json
2
2
  import os
3
3
  from collections.abc import Mapping
4
4
 
5
- _PROJECT_DIR = os.getenv("ZRB_PROJECT_DIR", ".")
6
- MONOREPO_CONFIG_FILE = os.path.join(_PROJECT_DIR, "monorepo.zrb.json")
5
+ PROJECT_DIR = os.getenv("ZRB_PROJECT_DIR", ".")
6
+ MONOREPO_CONFIG_FILE = os.path.join(PROJECT_DIR, "monorepo.zrb.json")
7
7
  MONOREPO_CONFIG: Mapping[str, Mapping[str, str]] = {}
8
8
 
9
9
  if os.path.isfile(MONOREPO_CONFIG_FILE):
@@ -0,0 +1,140 @@
1
+ import os
2
+
3
+ from zrb.builtin.monorepo._config import PROJECT_DIR
4
+ from zrb.task.cmd_task import CmdTask
5
+ from zrb.task_env.env import Env
6
+ from zrb.task_input.any_input import AnyInput
7
+ from zrb.task_input.str_input import StrInput
8
+
9
+ _CURRENT_DIR = os.path.dirname(__file__)
10
+
11
+
12
+ def create_pull_monorepo_task(
13
+ task_name: str = "pull-monorepo",
14
+ ) -> CmdTask:
15
+ return CmdTask(
16
+ name=task_name,
17
+ envs=[
18
+ Env("TIME", os_name="", default="{{datetime.datetime.now()}}"),
19
+ ],
20
+ cmd_path=[
21
+ os.path.join(_CURRENT_DIR, "_common.sh"),
22
+ os.path.join(_CURRENT_DIR, "pull-monorepo.sh"),
23
+ ],
24
+ cwd=PROJECT_DIR,
25
+ should_show_cmd=False,
26
+ should_show_working_directory=False,
27
+ should_print_cmd_result=False,
28
+ retry=0,
29
+ )
30
+
31
+
32
+ def create_push_monorepo_task(
33
+ task_name: str = "push-monorepo", default_commit_message: str = "Save changes"
34
+ ) -> CmdTask:
35
+ return CmdTask(
36
+ name=task_name,
37
+ inputs=[_create_commit_message_input(default_commit_message)],
38
+ envs=[
39
+ Env("MESSAGE", os_name="", default="{{input.message}}"),
40
+ ],
41
+ cmd_path=[
42
+ os.path.join(_CURRENT_DIR, "_common.sh"),
43
+ os.path.join(_CURRENT_DIR, "push-monorepo.sh"),
44
+ ],
45
+ cwd=PROJECT_DIR,
46
+ should_show_cmd=False,
47
+ should_show_working_directory=False,
48
+ should_print_cmd_result=False,
49
+ retry=0,
50
+ )
51
+
52
+
53
+ def create_add_subrepo_task(
54
+ origin: str,
55
+ folder: str,
56
+ branch: str,
57
+ task_name: str = "add",
58
+ ) -> CmdTask:
59
+ return CmdTask(
60
+ name=task_name,
61
+ envs=[
62
+ Env("ORIGIN", os_name="", default=origin),
63
+ Env("FOLDER", os_name="", default=folder),
64
+ Env("BRANCH", os_name="", default=branch),
65
+ Env("TIME", os_name="", default="{{datetime.datetime.now()}}"),
66
+ ],
67
+ cmd_path=[
68
+ os.path.join(_CURRENT_DIR, "_common.sh"),
69
+ os.path.join(_CURRENT_DIR, "add-subrepo.sh"),
70
+ ],
71
+ cwd=PROJECT_DIR,
72
+ should_show_cmd=False,
73
+ should_show_working_directory=False,
74
+ should_print_cmd_result=False,
75
+ retry=0,
76
+ )
77
+
78
+
79
+ def create_pull_subrepo_task(
80
+ origin: str,
81
+ folder: str,
82
+ branch: str,
83
+ task_name: str = "pull",
84
+ ) -> CmdTask:
85
+ return CmdTask(
86
+ name=task_name,
87
+ envs=[
88
+ Env("ORIGIN", os_name="", default=origin),
89
+ Env("FOLDER", os_name="", default=folder),
90
+ Env("BRANCH", os_name="", default=branch),
91
+ Env("TIME", os_name="", default="{{datetime.datetime.now()}}"),
92
+ ],
93
+ cmd_path=[
94
+ os.path.join(_CURRENT_DIR, "_common.sh"),
95
+ os.path.join(_CURRENT_DIR, "pull-subrepo.sh"),
96
+ ],
97
+ cwd=PROJECT_DIR,
98
+ should_show_cmd=False,
99
+ should_show_working_directory=False,
100
+ should_print_cmd_result=False,
101
+ retry=0,
102
+ )
103
+
104
+
105
+ def create_push_subrepo_task(
106
+ origin: str,
107
+ folder: str,
108
+ branch: str,
109
+ task_name: str = "push",
110
+ default_commit_message: str = "Commit",
111
+ ) -> CmdTask:
112
+ return CmdTask(
113
+ name=task_name,
114
+ inputs=[_create_commit_message_input(default_commit_message)],
115
+ envs=[
116
+ Env("ORIGIN", os_name="", default=origin),
117
+ Env("FOLDER", os_name="", default=folder),
118
+ Env("BRANCH", os_name="", default=branch),
119
+ Env("TIME", os_name="", default="{{datetime.datetime.now()}}"),
120
+ Env("MESSAGE", os_name="", default="{{input.message}}"),
121
+ ],
122
+ cmd_path=[
123
+ os.path.join(_CURRENT_DIR, "_common.sh"),
124
+ os.path.join(_CURRENT_DIR, "push-subrepo.sh"),
125
+ ],
126
+ cwd=PROJECT_DIR,
127
+ should_show_cmd=False,
128
+ should_show_working_directory=False,
129
+ should_print_cmd_result=False,
130
+ retry=0,
131
+ )
132
+
133
+
134
+ def _create_commit_message_input(default: str) -> AnyInput:
135
+ return StrInput(
136
+ name="message",
137
+ shortcut="m",
138
+ prompt="Commit Message",
139
+ default=default,
140
+ )
@@ -1,27 +1,18 @@
1
- import os
2
- from datetime import datetime
3
-
4
1
  from zrb.builtin.monorepo._config import MONOREPO_CONFIG
5
2
  from zrb.builtin.monorepo._group import monorepo_group
3
+ from zrb.builtin.monorepo._helper import (
4
+ create_add_subrepo_task,
5
+ create_pull_monorepo_task,
6
+ create_pull_subrepo_task,
7
+ create_push_monorepo_task,
8
+ create_push_subrepo_task,
9
+ )
6
10
  from zrb.helper.util import to_kebab_case
7
11
  from zrb.runner import runner
8
- from zrb.task.cmd_task import CmdTask
12
+ from zrb.task.flow_task import FlowTask
9
13
  from zrb.task_group.group import Group
10
- from zrb.task_input.str_input import StrInput
11
14
 
12
- _PROJECT_DIR = os.getenv("ZRB_PROJECT_DIR", ".")
13
-
14
- _pull_monorepo = CmdTask(
15
- name="pull-monorepo",
16
- inputs=[StrInput(name="message")],
17
- cwd=_PROJECT_DIR,
18
- cmd=[
19
- "git add . -A",
20
- 'git commit -m "{{input.message}}"',
21
- 'git pull origin "$(git branch --show-current)"',
22
- ],
23
- retry=0,
24
- )
15
+ _pull_monorepo = create_pull_monorepo_task()
25
16
 
26
17
  PULL_SUBREPO_UPSTREAM = _pull_monorepo
27
18
  PUSH_SUBREPO_UPSTREAM = _pull_monorepo
@@ -30,70 +21,106 @@ for name, config in MONOREPO_CONFIG.items():
30
21
  group = Group(
31
22
  name=kebab_name, parent=monorepo_group, description=f"Subrepo {name} management"
32
23
  )
33
- subrepo_origin = config.get("origin", "")
34
- subrepo_folder = config.get("folder", "")
35
- subrepo_branch = config.get("branch", "main")
24
+ origin = config.get("origin", "")
25
+ folder = config.get("folder", "")
26
+ branch = config.get("branch", "main")
36
27
 
37
- # define pull subrepo
38
- pull_subrepo = CmdTask(
28
+ pull_subrepo = FlowTask(
39
29
  name="pull",
40
30
  group=group,
41
- inputs=[
42
- StrInput(
43
- name="message",
44
- shortcut="m",
45
- prompt="Commit Messsage",
46
- default=lambda m: f"Pulling from subrepo at {datetime.now().strftime('%Y-%m-%d %I:%M:%p')}", # noqa
47
- )
31
+ upstreams=[_pull_monorepo],
32
+ steps=[
33
+ create_add_subrepo_task(
34
+ origin=origin,
35
+ folder=folder,
36
+ branch=branch,
37
+ task_name=f"add-{kebab_name}-subrepo",
38
+ ),
39
+ create_pull_subrepo_task(
40
+ origin=origin,
41
+ folder=folder,
42
+ branch=branch,
43
+ task_name=f"pull-{kebab_name}-subrepo",
44
+ ),
48
45
  ],
49
- cmd=[
50
- f'if [ ! -d "{subrepo_folder}" ]',
51
- "then",
52
- " echo Run subtree add",
53
- f' git subtree add --prefix "{subrepo_folder}" "{subrepo_origin}" "{subrepo_branch}"', # noqa
54
- "fi",
55
- "echo Run subtree pull",
56
- "set -e",
57
- f'git subtree pull --prefix "{subrepo_folder}" "{subrepo_origin}" "{subrepo_branch}"', # noqa
46
+ )
47
+ runner.register(pull_subrepo)
48
+
49
+ linked_pull_subrepo = FlowTask(
50
+ name=f"pull-{kebab_name}",
51
+ upstreams=[PULL_SUBREPO_UPSTREAM],
52
+ steps=[
53
+ create_add_subrepo_task(
54
+ origin=origin,
55
+ folder=folder,
56
+ branch=branch,
57
+ task_name=f"add-{kebab_name}-subrepo",
58
+ ),
59
+ create_pull_subrepo_task(
60
+ origin=origin,
61
+ folder=folder,
62
+ branch=branch,
63
+ task_name=f"pull-{kebab_name}-subrepo",
64
+ ),
58
65
  ],
59
- retry=0,
60
66
  )
61
- _pull_monorepo >> pull_subrepo
62
- linked_pull_subrepo = pull_subrepo.copy()
63
- PULL_SUBREPO_UPSTREAM >> linked_pull_subrepo
64
67
  PULL_SUBREPO_UPSTREAM = linked_pull_subrepo
65
- runner.register(pull_subrepo)
66
68
 
67
- # define push subrepo
68
- push_subrepo = CmdTask(
69
+ push_subrepo = FlowTask(
69
70
  name="push",
70
71
  group=group,
71
- inputs=[
72
- StrInput(
73
- name="message",
74
- shortcut="m",
75
- prompt="Commit Messsage",
76
- default=lambda m: f"Pushing to subrepo at {datetime.now().strftime('%Y-%m-%d %I:%M:%p')}", # noqa
77
- )
72
+ upstreams=[_pull_monorepo],
73
+ steps=[
74
+ create_add_subrepo_task(
75
+ origin=origin,
76
+ folder=folder,
77
+ branch=branch,
78
+ task_name=f"add-{kebab_name}-subrepo",
79
+ ),
80
+ create_pull_subrepo_task(
81
+ origin=origin,
82
+ folder=folder,
83
+ branch=branch,
84
+ task_name=f"pull-{kebab_name}-subrepo",
85
+ ),
86
+ create_push_subrepo_task(
87
+ origin=origin,
88
+ folder=folder,
89
+ branch=branch,
90
+ task_name=f"push-{kebab_name}-subrepo",
91
+ ),
92
+ create_push_monorepo_task(task_name="push-monorepo"),
78
93
  ],
79
- cmd=[
80
- f'if [ ! -d "{subrepo_folder}" ]',
81
- "then",
82
- " echo Run subtree add",
83
- f' git subtree add --prefix "{subrepo_folder}" "{subrepo_origin}" "{subrepo_branch}"', # noqa
84
- "fi",
85
- "echo Run subtree pull",
86
- "set -e",
87
- f'git subtree pull --prefix "{subrepo_folder}" "{subrepo_origin}" "{subrepo_branch}"', # noqa
88
- "set +e",
89
- "git add . -A",
90
- 'git commit -m "{{input.message}}"',
91
- f'git subtree push --prefix "{subrepo_folder}" "{subrepo_origin}" "{subrepo_branch}"', # noqa
94
+ )
95
+ runner.register(push_subrepo)
96
+
97
+ linked_push_subrepo = FlowTask(
98
+ name=f"push-{kebab_name}",
99
+ upstreams=[PUSH_SUBREPO_UPSTREAM],
100
+ steps=[
101
+ create_add_subrepo_task(
102
+ origin=origin,
103
+ folder=folder,
104
+ branch=branch,
105
+ task_name=f"add-{kebab_name}-subrepo",
106
+ ),
107
+ create_pull_subrepo_task(
108
+ origin=origin,
109
+ folder=folder,
110
+ branch=branch,
111
+ task_name=f"pull-{kebab_name}-subrepo",
112
+ ),
113
+ create_push_subrepo_task(
114
+ origin=origin,
115
+ folder=folder,
116
+ branch=branch,
117
+ task_name=f"push-{kebab_name}-subrepo",
118
+ ),
92
119
  ],
93
- retry=0,
94
120
  )
95
- _pull_monorepo >> push_subrepo
96
- linked_push_subrepo = push_subrepo.copy()
97
- PUSH_SUBREPO_UPSTREAM >> push_subrepo
98
121
  PUSH_SUBREPO_UPSTREAM = linked_push_subrepo
99
- runner.register(push_subrepo)
122
+
123
+
124
+ _push_monorepo = create_push_monorepo_task(task_name="push-monorepo")
125
+ PUSH_SUBREPO_UPSTREAM >> _push_monorepo
126
+ PUSH_SUBREPO_UPSTREAM = _push_monorepo
@@ -0,0 +1,22 @@
1
+ set -e
2
+
3
+ if [ -d "${FOLDER}" ]
4
+ then
5
+ exit 0
6
+ fi
7
+
8
+ CONFLICT="$(git diff --name-only --diff-filter=U)"
9
+ if [ -n "${CONFLICT}" ]
10
+ then
11
+ log_conflict_error "${CONFLICT}"
12
+ exit 1
13
+ fi
14
+
15
+ log_info "Adding subtree: ${FOLDER}"
16
+ git subtree add --prefix "${FOLDER}" "${ORIGIN}" "${BRANCH}"
17
+ git add . -A
18
+ if [ -n "$(git status --porcelain)" ]
19
+ then
20
+ log_info "Commit changes"
21
+ git commit -m "Adding subtree: ${FOLDER} at ${TIME}"
22
+ fi
@@ -1,7 +1,12 @@
1
1
  import json
2
+ import os
2
3
  from collections.abc import Mapping
3
4
 
4
- from zrb.builtin.monorepo._config import MONOREPO_CONFIG, MONOREPO_CONFIG_FILE
5
+ from zrb.builtin.monorepo._config import (
6
+ MONOREPO_CONFIG,
7
+ MONOREPO_CONFIG_FILE,
8
+ PROJECT_DIR,
9
+ )
5
10
  from zrb.builtin.monorepo._group import monorepo_group
6
11
  from zrb.runner import runner
7
12
  from zrb.task.any_task import AnyTask
@@ -30,6 +35,9 @@ from zrb.task_input.str_input import StrInput
30
35
  def add_to_monorepo(*args, **kwargs):
31
36
  task: AnyTask = kwargs.get("_task")
32
37
  input_map: Mapping[str, str] = task.get_input_map()
38
+ abs_folder = os.path.join(PROJECT_DIR, input_map.get("folder", ""))
39
+ if os.path.isdir(abs_folder):
40
+ raise ValueError(f"Directory exists: {abs_folder}")
33
41
  config = dict(MONOREPO_CONFIG)
34
42
  config[input_map.get("alias", "")] = {
35
43
  "folder": input_map.get("folder", ""),
@@ -0,0 +1,18 @@
1
+ set -e
2
+
3
+ CONFLICT="$(git diff --name-only --diff-filter=U)"
4
+ if [ -n "${CONFLICT}" ]
5
+ then
6
+ log_conflict_error "${CONFLICT}"
7
+ exit 1
8
+ fi
9
+
10
+ git add . -A
11
+ if [ -n "$(git status --porcelain)" ]
12
+ then
13
+ log_info "Commit changes"
14
+ git commit -m "Before pulling from monorepo at ${TIME}"
15
+ fi
16
+
17
+ log_info "Pulling from main repository"
18
+ git pull origin "$(git branch --show-current)"
@@ -0,0 +1,18 @@
1
+ set -e
2
+
3
+ CONFLICT="$(git diff --name-only --diff-filter=U)"
4
+ if [ -n "${CONFLICT}" ]
5
+ then
6
+ log_conflict_error "${CONFLICT}"
7
+ exit 1
8
+ fi
9
+
10
+ log_info "Pulling from subtree"
11
+ git subtree pull --prefix "${FOLDER}" "${ORIGIN}" "${BRANCH}"
12
+
13
+ CONFLICT="$(git diff --name-only --diff-filter=U)"
14
+ if [ -n "${CONFLICT}" ]
15
+ then
16
+ log_conflict_error "${CONFLICT}"
17
+ exit 1
18
+ fi
@@ -15,9 +15,10 @@ pull_from_monorepo = Task(
15
15
  name="message",
16
16
  shortcut="m",
17
17
  prompt="Commit Messsage",
18
- default=lambda m: f"Pulling from subrepos at {datetime.now().strftime('%Y-%m-%d %I:%M:%p')}", # noqa
18
+ default=lambda m: f"Synchronize subrepos at {datetime.now()}",
19
19
  )
20
20
  ],
21
+ retry=0,
21
22
  )
22
23
  PULL_SUBREPO_UPSTREAM >> pull_from_monorepo
23
24
  runner.register(pull_from_monorepo)
@@ -0,0 +1,18 @@
1
+ set -e
2
+
3
+ CONFLICT="$(git diff --name-only --diff-filter=U)"
4
+ if [ -n "${CONFLICT}" ]
5
+ then
6
+ log_conflict_error "${CONFLICT}"
7
+ exit 1
8
+ fi
9
+
10
+ git add . -A
11
+ if [ -n "$(git status --porcelain)" ]
12
+ then
13
+ log_info "Commit changes"
14
+ git commit -m "${MESSAGE}"
15
+ fi
16
+
17
+ log_info "Pushing to main repository"
18
+ git push origin "$(git branch --show-current)"
@@ -0,0 +1,18 @@
1
+ set -e
2
+
3
+ CONFLICT="$(git diff --name-only --diff-filter=U)"
4
+ if [ -n "${CONFLICT}" ]
5
+ then
6
+ log_conflict_error "${CONFLICT}"
7
+ exit 1
8
+ fi
9
+
10
+ git add . -A
11
+ if [ -n "$(git status --porcelain)" ]
12
+ then
13
+ log_info "Commit changes"
14
+ git commit -m "${MESSAGE}"
15
+ fi
16
+
17
+ log_info "Pushing to subtree"
18
+ git subtree push --prefix "${FOLDER}" "${ORIGIN}" "${BRANCH}"
@@ -3,21 +3,9 @@ from datetime import datetime
3
3
  from zrb.builtin.monorepo._group import monorepo_group
4
4
  from zrb.builtin.monorepo._task import PUSH_SUBREPO_UPSTREAM
5
5
  from zrb.runner import runner
6
- from zrb.task.cmd_task import CmdTask
7
6
  from zrb.task.task import Task
8
7
  from zrb.task_input.str_input import StrInput
9
8
 
10
- _push_monorepo = CmdTask(
11
- name="push-monorepo",
12
- inputs=[StrInput(name="message")],
13
- cmd=[
14
- "git add . -A",
15
- 'git commit -m "{{input.message}}"',
16
- 'git push origin "$(git branch --show-current)"',
17
- ],
18
- retry=0,
19
- )
20
-
21
9
  push_to_monorepo = Task(
22
10
  name="push",
23
11
  group=monorepo_group,
@@ -27,9 +15,10 @@ push_to_monorepo = Task(
27
15
  name="message",
28
16
  shortcut="m",
29
17
  prompt="Commit Messsage",
30
- default=lambda m: f"Pushing to subrepos at {datetime.now().strftime('%Y-%m-%d %I:%M:%p')}", # noqa
18
+ default=lambda m: f"Synchronize subrepos at {datetime.now()}",
31
19
  )
32
20
  ],
21
+ retry=0,
33
22
  )
34
- PUSH_SUBREPO_UPSTREAM >> _push_monorepo >> push_to_monorepo
23
+ PUSH_SUBREPO_UPSTREAM >> push_to_monorepo
35
24
  runner.register(push_to_monorepo)
@@ -16,8 +16,11 @@ async def stop_asyncio():
16
16
 
17
17
 
18
18
  def stop_asyncio_sync():
19
- loop = asyncio.get_event_loop()
20
- if loop.is_running():
21
- loop.create_task(stop_asyncio())
22
- else:
23
- loop.run_until_complete(stop_asyncio())
19
+ try:
20
+ loop = asyncio.get_event_loop()
21
+ if loop.is_running():
22
+ loop.create_task(stop_asyncio())
23
+ else:
24
+ loop.run_until_complete(stop_asyncio())
25
+ except Exception:
26
+ pass
zrb/helper/cli.py CHANGED
@@ -58,7 +58,6 @@ def create_cli() -> click.Group:
58
58
  attrs=["bold"],
59
59
  )
60
60
  )
61
- traceback.print_exc()
62
61
  # Load zrb_init.py
63
62
  project_dir = os.getenv("ZRB_PROJECT_DIR", os.getcwd())
64
63
  project_script = os.path.join(project_dir, "zrb_init.py")
@@ -288,7 +288,7 @@ class BaseTask(FinishTracker, AttemptTracker, Renderer, BaseTaskModel, AnyTask):
288
288
  self._print_result(result)
289
289
  return result
290
290
  except RuntimeError as e:
291
- if "event loop is closed" not in str(e).lower():
291
+ if raise_error and ("event loop is closed" not in str(e).lower()):
292
292
  raise e
293
293
  except Exception as e:
294
294
  self.log_error(f"{e}")
@@ -33,32 +33,33 @@ from zrb.task_input.any_input import AnyInput
33
33
 
34
34
  logger.debug(colored("Loading zrb.task.docker_compose_task", attrs=["dark"]))
35
35
 
36
+ TDockerComposeTask = TypeVar("TDockerComposeTask", bound="DockerComposeTask")
36
37
 
37
- def _get_ensure_zrb_network_task(backend: str):
38
- CURRENT_DIR = os.path.dirname(__file__)
39
- SHELL_SCRIPT_DIR = os.path.join(CURRENT_DIR, "..", "shell-scripts")
40
- ensure_container_backend = CmdTask(
41
- name="ensure-compose-backend",
42
- cmd_path=[
43
- os.path.join(SHELL_SCRIPT_DIR, "_common-util.sh"),
44
- os.path.join(SHELL_SCRIPT_DIR, f"ensure-{backend}-is-installed.sh"),
45
- ],
46
- preexec_fn=None,
47
- should_print_cmd_result=False,
48
- )
49
- return CmdTask(
50
- name="ensure-zrb-network",
51
- cmd=[
52
- f"{backend} network inspect zrb >/dev/null 2>&1 || \\",
53
- f"{backend} network create -d bridge zrb",
54
- ],
55
- upstreams=[ensure_container_backend],
56
- should_print_cmd_result=False,
57
- )
58
-
38
+ CURRENT_DIR = os.path.dirname(__file__)
39
+ SHELL_SCRIPT_DIR = os.path.join(CURRENT_DIR, "..", "shell-scripts")
59
40
 
60
- TDockerComposeTask = TypeVar("TDockerComposeTask", bound="DockerComposeTask")
61
- ensure_zrb_network_task = _get_ensure_zrb_network_task(CONTAINER_BACKEND)
41
+ ensure_container_backend = CmdTask(
42
+ name="ensure-compose-backend",
43
+ cmd_path=[
44
+ os.path.join(SHELL_SCRIPT_DIR, "_common-util.sh"),
45
+ os.path.join(SHELL_SCRIPT_DIR, f"ensure-{CONTAINER_BACKEND}-is-installed.sh"),
46
+ ],
47
+ preexec_fn=None,
48
+ should_print_cmd_result=False,
49
+ should_show_cmd=False,
50
+ should_show_working_directory=False,
51
+ )
52
+ ensure_zrb_network_task = CmdTask(
53
+ name="ensure-zrb-network",
54
+ cmd=[
55
+ f"{CONTAINER_BACKEND} network inspect zrb >/dev/null 2>&1 || \\",
56
+ f"{CONTAINER_BACKEND} network create -d bridge zrb",
57
+ ],
58
+ upstreams=[ensure_container_backend],
59
+ should_print_cmd_result=False,
60
+ should_show_cmd=False,
61
+ should_show_working_directory=False,
62
+ )
62
63
 
63
64
 
64
65
  @typechecked
@@ -120,14 +121,13 @@ class DockerComposeTask(CmdTask):
120
121
  should_show_cmd: bool = True,
121
122
  should_show_working_directory: bool = True,
122
123
  ):
123
- combined_env_files = list(env_files)
124
124
  CmdTask.__init__(
125
125
  self,
126
126
  name=name,
127
127
  group=group,
128
128
  inputs=inputs,
129
129
  envs=envs,
130
- env_files=combined_env_files,
130
+ env_files=env_files,
131
131
  icon=icon,
132
132
  color=color,
133
133
  description=description,
zrb/task/flow_task.py CHANGED
@@ -85,7 +85,6 @@ class FlowTask(BaseTask):
85
85
  retry_interval=retry_interval,
86
86
  should_execute=should_execute,
87
87
  return_upstream_result=return_upstream_result,
88
- run=lambda *args, **kwargs: kwargs.get("_task").print_out("🆗"),
89
88
  )
90
89
 
91
90
  def copy(self) -> TFlowTask: