zrb 0.26.0__py3-none-any.whl → 0.28.0__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.
Files changed (45) hide show
  1. zrb/__init__.py +0 -3
  2. zrb/action/runner.py +0 -2
  3. zrb/builtin/devtool/install/zsh/install.sh +1 -1
  4. zrb/builtin/monorepo/_common.sh +15 -0
  5. zrb/builtin/monorepo/_config.py +2 -2
  6. zrb/builtin/monorepo/_helper.py +140 -0
  7. zrb/builtin/monorepo/_task.py +98 -71
  8. zrb/builtin/monorepo/add-subrepo.sh +22 -0
  9. zrb/builtin/monorepo/add.py +9 -1
  10. zrb/builtin/monorepo/pull-monorepo.sh +18 -0
  11. zrb/builtin/monorepo/pull-subrepo.sh +18 -0
  12. zrb/builtin/monorepo/pull.py +2 -1
  13. zrb/builtin/monorepo/push-monorepo.sh +18 -0
  14. zrb/builtin/monorepo/push-subrepo.sh +18 -0
  15. zrb/builtin/monorepo/push.py +3 -14
  16. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/microservices/start.py +7 -2
  17. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/monolith/start.py +7 -2
  18. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/remove.py +8 -2
  19. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/stop.py +8 -2
  20. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/support/start.py +15 -3
  21. zrb/config/config.py +0 -9
  22. zrb/helper/asyncio_task.py +19 -6
  23. zrb/helper/cli.py +0 -1
  24. zrb/task/base_task/base_task.py +39 -9
  25. zrb/task/cmd_task.py +9 -10
  26. zrb/task/docker_compose_start_task.py +30 -27
  27. zrb/task/docker_compose_task.py +64 -33
  28. zrb/task/flow_task.py +0 -1
  29. zrb/task/looper.py +1 -1
  30. zrb/task/remote_cmd_task.py +55 -18
  31. zrb/task/rsync_task.py +57 -23
  32. {zrb-0.26.0.dist-info → zrb-0.28.0.dist-info}/METADATA +2 -2
  33. {zrb-0.26.0.dist-info → zrb-0.28.0.dist-info}/RECORD +36 -38
  34. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/_helper.py +0 -8
  35. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/microservices/_helper.py +0 -24
  36. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/monolith/_helper.py +0 -22
  37. zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/support/_helper.py +0 -30
  38. zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/.generator-version +0 -1
  39. zrb/shell-scripts/ensure-podman-is-installed.sh +0 -55
  40. zrb/shell-scripts/rsync-util.sh +0 -12
  41. zrb/shell-scripts/ssh-util.sh +0 -12
  42. zrb/task/base_remote_cmd_task.py +0 -354
  43. {zrb-0.26.0.dist-info → zrb-0.28.0.dist-info}/LICENSE +0 -0
  44. {zrb-0.26.0.dist-info → zrb-0.28.0.dist-info}/WHEEL +0 -0
  45. {zrb-0.26.0.dist-info → zrb-0.28.0.dist-info}/entry_points.txt +0 -0
zrb/task/rsync_task.py CHANGED
@@ -17,9 +17,8 @@ from zrb.task.any_task_event_handler import (
17
17
  OnTriggered,
18
18
  OnWaiting,
19
19
  )
20
- from zrb.task.base_remote_cmd_task import BaseRemoteCmdTask, RemoteConfig
21
20
  from zrb.task.cmd_task import CmdTask
22
- from zrb.task_env.env import Env
21
+ from zrb.task_env.env import Env, PrivateEnv
23
22
  from zrb.task_env.env_file import EnvFile
24
23
  from zrb.task_group.group import Group
25
24
  from zrb.task_input.any_input import AnyInput
@@ -28,8 +27,6 @@ logger.debug(colored("Loading zrb.task.rsync_task", attrs=["dark"]))
28
27
 
29
28
  _CURRENT_DIR = os.path.dirname(__file__)
30
29
  _SHELL_SCRIPT_DIR = os.path.join(_CURRENT_DIR, "..", "shell-scripts")
31
- with open(os.path.join(_SHELL_SCRIPT_DIR, "rsync-util.sh")) as file:
32
- _RSYNC_UTIL_SCRIPT = file.read()
33
30
 
34
31
  ensure_rsync_is_installed = CmdTask(
35
32
  name="ensure-ssh-is-installed",
@@ -39,19 +36,17 @@ ensure_rsync_is_installed = CmdTask(
39
36
  os.path.join(_SHELL_SCRIPT_DIR, "ensure-rsync-is-installed.sh"),
40
37
  ],
41
38
  preexec_fn=None,
39
+ should_print_cmd_result=False,
40
+ should_show_cmd=False,
41
+ should_show_working_directory=False,
42
42
  )
43
43
 
44
44
 
45
45
  @typechecked
46
- class RsyncTask(BaseRemoteCmdTask):
46
+ class RsyncTask(CmdTask):
47
47
  def __init__(
48
48
  self,
49
49
  name: str,
50
- remote_configs: Iterable[RemoteConfig],
51
- src: JinjaTemplate,
52
- dst: JinjaTemplate,
53
- src_is_remote: bool = False,
54
- dst_is_remote: bool = True,
55
50
  group: Optional[Group] = None,
56
51
  inputs: Iterable[AnyInput] = [],
57
52
  envs: Iterable[Env] = [],
@@ -60,7 +55,17 @@ class RsyncTask(BaseRemoteCmdTask):
60
55
  color: Optional[str] = None,
61
56
  description: str = "",
62
57
  executable: Optional[str] = None,
63
- cwd: Optional[Union[str, pathlib.Path]] = None,
58
+ remote_host: JinjaTemplate = "localhost",
59
+ remote_port: Union[JinjaTemplate, int] = 22,
60
+ remote_user: JinjaTemplate = "root",
61
+ remote_password: JinjaTemplate = "",
62
+ remote_ssh_key: JinjaTemplate = "",
63
+ src_path: JinjaTemplate = ".",
64
+ src_is_remote: bool = False,
65
+ dst_path: JinjaTemplate = ".",
66
+ dst_is_remote: bool = True,
67
+ cwd: Optional[Union[JinjaTemplate, pathlib.Path]] = None,
68
+ should_render_cwd: bool = True,
64
69
  upstreams: Iterable[AnyTask] = [],
65
70
  fallbacks: Iterable[AnyTask] = [],
66
71
  on_triggered: Optional[OnTriggered] = None,
@@ -78,25 +83,24 @@ class RsyncTask(BaseRemoteCmdTask):
78
83
  max_error_line: int = 1000,
79
84
  preexec_fn: Optional[Callable[[], Any]] = os.setsid,
80
85
  should_execute: Union[bool, str, Callable[..., bool]] = True,
86
+ return_upstream_result: bool = False,
87
+ should_print_cmd_result: bool = True,
88
+ should_show_cmd: bool = True,
89
+ should_show_working_directory: bool = True,
81
90
  ):
82
- parsed_src = self._get_parsed_path(src_is_remote, src)
83
- parsed_dst = self._get_parsed_path(dst_is_remote, dst)
84
- cmd = f'auth_rsync "{parsed_src}" "{parsed_dst}"'
85
- BaseRemoteCmdTask.__init__(
91
+ CmdTask.__init__(
86
92
  self,
87
93
  name=name,
88
- remote_configs=remote_configs,
89
94
  group=group,
90
95
  inputs=inputs,
91
- envs=envs,
96
+ envs=envs + [PrivateEnv(name="_ZRB_SSH_PASSWORD", default=remote_password)],
92
97
  env_files=env_files,
93
98
  icon=icon,
94
99
  color=color,
95
100
  description=description,
96
101
  executable=executable,
97
- pre_cmd=_RSYNC_UTIL_SCRIPT,
98
- cmd=cmd,
99
102
  cwd=cwd,
103
+ should_render_cwd=should_render_cwd,
100
104
  upstreams=[ensure_rsync_is_installed] + upstreams,
101
105
  fallbacks=fallbacks,
102
106
  on_triggered=on_triggered,
@@ -114,9 +118,39 @@ class RsyncTask(BaseRemoteCmdTask):
114
118
  max_error_line=max_error_line,
115
119
  preexec_fn=preexec_fn,
116
120
  should_execute=should_execute,
121
+ return_upstream_result=return_upstream_result,
122
+ should_print_cmd_result=should_print_cmd_result,
123
+ should_show_cmd=should_show_cmd,
124
+ should_show_working_directory=should_show_working_directory,
117
125
  )
126
+ self._remote_host = remote_host
127
+ self._remote_port = remote_port
128
+ self._remote_user = remote_user
129
+ self._remote_password = remote_password
130
+ self._remote_ssh_key = remote_ssh_key
131
+ self._src_path = src_path
132
+ self._src_is_remote = src_is_remote
133
+ self._dst_path = dst_path
134
+ self._dst_is_remote = dst_is_remote
135
+
136
+ def get_cmd_script(self, *args: Any, **kwargs: Any) -> str:
137
+ port = self.render_str(self._remote_port)
138
+ password = self.render_str(self._remote_password)
139
+ key = self.render_str(self._remote_ssh_key)
140
+ src = self._get_path(self._src_path, self._src_is_remote)
141
+ dst = self._get_path(self._dst_path, self._dst_is_remote)
142
+ if key != "" and password != "":
143
+ return f'sshpass -p "$_ZRB_SSH_PASSWORD" rsync --mkpath -avz -e "ssh -i {key} -p {port}" {src} {dst}' # noqa
144
+ if key != "":
145
+ return f'rsync --mkpath -avz -e "ssh -i {key} -p {port}" {src} {dst}'
146
+ if password != "":
147
+ return f'sshpass -p "$_ZRB_SSH_PASSWORD" rsync --mkpath -avz -e "ssh -p {port}" {src} {dst}' # noqa
148
+ return f'rsync --mkpath -avz -e "ssh -p {port}" {src} {dst}'
118
149
 
119
- def _get_parsed_path(self, is_remote: bool, path: str) -> str:
120
- if not is_remote:
121
- return path
122
- return "${_CONFIG_USER}@${_CONFIG_HOST}:" + path
150
+ def _get_path(self, resource_path: str, is_remote: bool) -> str:
151
+ rendered_path = self.render_str(resource_path)
152
+ if is_remote:
153
+ host = self.render_str(self._remote_host)
154
+ user = self.render_str(self._remote_user)
155
+ return f"{user}@{host}:{rendered_path}"
156
+ return rendered_path
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zrb
3
- Version: 0.26.0
3
+ Version: 0.28.0
4
4
  Summary: A Framework to Enhance Your Workflow
5
5
  Home-page: https://github.com/state-alchemists/zrb
6
6
  License: AGPL-3.0-or-later
7
- Keywords: Automation,Task Runner,Code Generator,Low Code
7
+ Keywords: Automation,Task Runner,Code Generator,Monorepo,Low Code
8
8
  Author: Go Frendi Gunawan
9
9
  Author-email: gofrendiasgard@gmail.com
10
10
  Requires-Python: >=3.10.0,<4.0.0
@@ -1,7 +1,7 @@
1
- zrb/__init__.py,sha256=vmWT2ODW6tlhL3hyqOjMT_ezG2fafIK1gZ6G6IBYEgM,2994
1
+ zrb/__init__.py,sha256=dQs1S6z3XbG1BeQ62YYxc6cUs5ejw9T9ajkPgNVEs34,2875
2
2
  zrb/__main__.py,sha256=-_k0XOahDF-06n41Uly-oUMkZ8XDSxO-WUUImWz6GiA,171
3
3
  zrb/action/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- zrb/action/runner.py,sha256=aB46inPOs7CDckfIsS_mlgQ92_bfKltcnb77PjW6Tfw,5179
4
+ zrb/action/runner.py,sha256=pSQMtJKP7xb0IZ1X5iGPX0y4ZA8COO7gGQGfjlVKKtc,5140
5
5
  zrb/advertisement.py,sha256=E-8Dv0oPhw0j-bKEc_IsWV9NPUIs24r1Jgp0p0exAMU,664
6
6
  zrb/builtin/__init__.py,sha256=Nw3gZS1S-HKt_LTQuhffZT4NcZAdelJabCSFdkm6E8g,3407
7
7
  zrb/builtin/_helper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -59,7 +59,7 @@ zrb/builtin/devtool/install/terraform/terraform.py,sha256=jBtBFoSEh6jrDV2_mUOqty
59
59
  zrb/builtin/devtool/install/tmux/install.sh,sha256=RsmLzKVzY9O7wBNMc-xE7S1sH0aJDsCiVgEXsRXqQ8w,1229
60
60
  zrb/builtin/devtool/install/tmux/resource/config.sh,sha256=wQCb4Q-mNkxIPOcvpN84X9RUWkGY16u3Vd-pOhVidgg,416
61
61
  zrb/builtin/devtool/install/tmux/tmux.py,sha256=Qvv9mSZhzBtoPRL5zs49G2GdJpY674s8Bt4nFWbIF-o,1322
62
- zrb/builtin/devtool/install/zsh/install.sh,sha256=wHOLrsEKdqtJWoJbfixxJVsVoTGH7gitKIepgDcZMZ0,1720
62
+ zrb/builtin/devtool/install/zsh/install.sh,sha256=J2GdFuTRo8s33LcFmjKMYpCZ_wZB4iK0aEeL7XtcYyE,1719
63
63
  zrb/builtin/devtool/install/zsh/resource/config.sh,sha256=2ZEmmiu5KS-FSMlj48IDPh5dhx5fnbzri86CtzI5Np0,5068
64
64
  zrb/builtin/devtool/install/zsh/zsh.py,sha256=JJMyNSDt0uMTJppYRT2bWy446D8ArQ8ZRPZLV117s7g,1325
65
65
  zrb/builtin/docker/__init__.py,sha256=H6mkl7hojJYiHArn2Q1ppw9yZC8TxTRnrYajRJcR77Y,142
@@ -87,12 +87,19 @@ zrb/builtin/md5/_group.py,sha256=dimqCmJItc7qx7yRm64tL608oMAjOVXRycP7NTSSFi0,100
87
87
  zrb/builtin/md5/hash.py,sha256=futO_5AsXHdS5a7vuBLcgnKCpfEO9UeM-EqaIIBPCZE,572
88
88
  zrb/builtin/md5/sum.py,sha256=KZLsXIJrVxvbjyAiVv27-Y2ty-nBRRojsGxXyzQZaYE,688
89
89
  zrb/builtin/monorepo/__init__.py,sha256=AgzIDOcrW4FXxly5SqExyGRo-fIo0ocX_fCScLPDuR0,239
90
- zrb/builtin/monorepo/_config.py,sha256=ArqI0MZbuTkq2C3kdc6lVB2L2xjK5x2Z3IU-4_0YLJ8,367
90
+ zrb/builtin/monorepo/_common.sh,sha256=HfSIyw_OYGXx0TZzwdLB21fX6sTnZ_45Vf6YXVxxU-k,336
91
+ zrb/builtin/monorepo/_config.py,sha256=cTKOoDonkVXR-1SGUYtA8d5aUpDkhN4olhPQwfJhV4U,365
91
92
  zrb/builtin/monorepo/_group.py,sha256=idv_8MIE-TCNAvhE0urh7OxTx3qNZbBlE9wYJ-teqa8,115
92
- zrb/builtin/monorepo/_task.py,sha256=7QKgVNf6xqD6wAHjtVEE6CsHS12Yt_yqoalomPywY7A,3365
93
- zrb/builtin/monorepo/add.py,sha256=HhHLquFHbYvNja3foSstFAe_NBL1zSp2SWUBQuIiTYU,1374
94
- zrb/builtin/monorepo/pull.py,sha256=2wIrz1D6OJmuBkdVbWRDXUiz8W4aLo3GC601_ASVAb8,702
95
- zrb/builtin/monorepo/push.py,sha256=7I1OpjJjM-6aG6qQj2Tz584WngcY6yXYG8DjFgLqn08,999
93
+ zrb/builtin/monorepo/_helper.py,sha256=RuK0mkQI73ryixD_iYfp8lxJmrFxkHyFvDThW2fsrF8,4057
94
+ zrb/builtin/monorepo/_task.py,sha256=1UY8eErrjpykK51UjjIu74lH25jMW8l3k36-eyYk9KI,3869
95
+ zrb/builtin/monorepo/add-subrepo.sh,sha256=LWyie9_3aCA7OarzDl7HedJnV7OpkkSHUHHPDcToNQ8,426
96
+ zrb/builtin/monorepo/add.py,sha256=MtPhTEJEdpfRsbdB-hln4hyGzPVWu9kdrmiCxqu0dTs,1580
97
+ zrb/builtin/monorepo/pull-monorepo.sh,sha256=80mC-FOmIFjhgeGe_s6SzKgf5ZyUwrUsz8O1huTP3Ww,377
98
+ zrb/builtin/monorepo/pull-subrepo.sh,sha256=7M6haXVkApuS3F1Ndp-jrdRMLbPbSYZUo7ckVAffypI,365
99
+ zrb/builtin/monorepo/pull.py,sha256=6W9w2QJipn9TYIqaE-tzW_KK1hxPU7oJW0IlH_yPwJA,676
100
+ zrb/builtin/monorepo/push-monorepo.sh,sha256=qkr6vfIvIKSKCiE1rartU5vahcjP7Ocvrt-zhgc1ZSo,346
101
+ zrb/builtin/monorepo/push-subrepo.sh,sha256=k-9ZbEEwDOgHn9Jo_CSkZwk4-bkcZm4TUc-e6j8Kvlk,353
102
+ zrb/builtin/monorepo/push.py,sha256=snKu4ravGFBBxHwLegI_kg65a9sG8bpf7t2T2CanNcE,668
96
103
  zrb/builtin/process/__init__.py,sha256=dWM1zIehY65rkJvEAFvX6HGJHL8kb1gkzaSz0Woay8M,283
97
104
  zrb/builtin/process/_group.py,sha256=KY7iQ_pvqe5iVsRFeLWs-O-xuSyqlTXVj47_TCnu7zQ,118
98
105
  zrb/builtin/process/pid/__init__.py,sha256=Rcb3bYgR_oVNOlaggYjcRipHRehrumZuQyadrguXdR0,293
@@ -219,23 +226,19 @@ zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/config
219
226
  zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/__init__.py,sha256=UllmGaHqIT4JrsyVN6kQAcSVA32sUdYpBpOQpxmLQ_M,988
220
227
  zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/_env.py,sha256=2ysgQ6yJWb6h3u0tMvNXFgXwbUEE7CJX6k_8VxOOnNg,333
221
228
  zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/_group.py,sha256=WbQq0AprHwudJPP38VpDB0cTnQP1HCZK_xVJY8_D1n0,240
222
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/_helper.py,sha256=uXHHTi3qjmgPd-hBsXdbCjyXHVxl84nZQao1eaQb5xk,280
223
229
  zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/_input.py,sha256=uBXfLqOQxiVn8UGfGhgTbUV_1Se6nNVQZKxF9mpTW6k,246
224
230
  zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/_service_config.py,sha256=lOvwhfIbdMuQ-QYoibG5FMW2U-ZuOWcLd-puWAVcj-A,2048
225
231
  zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/microservices/__init__.py,sha256=ftU92OGyRh2VZr-fkR1rJA-VLxevBlIypHqrlNW3OMc,250
226
232
  zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/microservices/_group.py,sha256=PI6pgBfZRyG6YQqLoEZQLD9TKVZcrn2Yx8wqpunROwo,292
227
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/microservices/_helper.py,sha256=_SY-bY7aG3HDI7AZpTPPb7TelLijXXeA0kY-xD0Bt5I,903
228
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/microservices/start.py,sha256=NHvC5A1A--bM0hQ53Zu1rJMtFUm5UVBwhD4-SJ67L0Y,2216
233
+ zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/microservices/start.py,sha256=h-a72rEk0ZwSVwZ_xXBAqe0Y280ieLUKfxS9yZHXumw,2459
229
234
  zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/monolith/__init__.py,sha256=1ELaHwNeMmFO9Hy9foqsM-EHgesKYlnQsbUI_i_KYiA,230
230
235
  zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/monolith/_group.py,sha256=u-vUVCZ8Q8LIVlw4lpduZYImIpSsNmO5FfUqsGrVFLc,277
231
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/monolith/_helper.py,sha256=1Eu33q5vR3xcT2wAN9aEjMXaZvnNQky7pbxNxTOR7yY,867
232
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/monolith/start.py,sha256=b-2vArVVxa-bSzlSriVmEOMEFD0BtFD_Kim6lN1xBzs,2185
233
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/remove.py,sha256=sZaecjWGYqv834hh_MyDr5yKOFj8HkdraMREmR5AJI8,956
234
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/stop.py,sha256=SAOiJdc2wSOnpzsx5pBtX1qwP2BYbZCT2peqD-8YT4s,994
236
+ zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/monolith/start.py,sha256=9QTneFfh5lxwaiIJrUM6fAhbj38sgevj6ZVjDKzhaKo,2433
237
+ zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/remove.py,sha256=A87V06Du_V4kG1EK9aWlrFAwvazu8ucv9Rak6_Nu1kQ,1016
238
+ zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/stop.py,sha256=rxtG4P4MFVYGhTq2Al6WooGghaQ2xmplXWo_mZXuxHU,1054
235
239
  zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/support/__init__.py,sha256=TKNXysArhYcwaeLWCTrim3U599JXs_IkgKF0y7urYVI,226
236
240
  zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/support/_group.py,sha256=NbgCdPT5lGEd9ce4bid_HuFVp9loDKDA7qA7KfPsowA,274
237
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/support/_helper.py,sha256=gL36Db-0Qu6lTc161YjwzJfrk5xTD2NrIpMn1UziQAY,1176
238
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/support/start.py,sha256=Q_j94fC3moUi_xxbna6JbCdsUYmlUEg77y58B_FSh1w,1773
241
+ zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/support/start.py,sha256=DK-gEEsxAafI0Ai9viaLABaumJ8QtKctmEdkC2r6pmI,2198
239
242
  zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/destroy.py,sha256=hMwW7c-kRfDAc_ndLJ--1yu4KbPzdhM5bcOq1wpml1A,1161
240
243
  zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/destroy.sh,sha256=Yc-jb01oostiRMtrsTNWJXn_Fee5iDfv16L4DaoklEA,29
241
244
  zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/frontend/__init__.py,sha256=oUAubQE0KGRd04wSURGC87ZRoCl58yPGccRiey7tJBQ,299
@@ -271,7 +274,6 @@ zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/monoli
271
274
  zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/monolith/start.sh,sha256=KI-PqiOes-xWA2thSW2icD3VEgxRJUxjRmc_3y9mS14,57
272
275
  zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/test.py,sha256=RuZGmP2OTPZcDOuBX5p-j5TizakkDxEClWhB2Fg64M4,1826
273
276
  zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/test.sh,sha256=ibnoS4kV1p-3JREJKlX2UsziP009zHzP9miPxID1tpk,308
274
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/.generator-version,sha256=7kobEqGURA6fqyUvQGmQgHfJ7qsL3tXgh_8IUo4M7PY,10
275
277
  zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/.gitignore,sha256=YFrq8n_0yn9FT0XqcPVftHmKj31DSh4ftIY8EvQm0ik,53
276
278
  zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/README.md,sha256=mIE-CBlKzx_wEQdGIuiJbzDX_bCC13ckMnOYU8erHpI,15200
277
279
  zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/all-module-disabled.env,sha256=eIbYiufwRJ-artnA7Cw2y4YzGrPw2XtEb-ih_f4tCuw,56
@@ -1320,7 +1322,7 @@ zrb/builtin/update.py,sha256=89i_fPUlL27IXczLI7Lr7k4STMpnxyw2je8daCKUTQo,225
1320
1322
  zrb/builtin/version.py,sha256=i0pnnLQFLdTwcVqZs6xsGkbAY-IPbmelip7HuZVjgv0,384
1321
1323
  zrb/builtin/watch_changes.py,sha256=Vr__e_T31nnbefcPftvyn78dT3-UXqNRpH0KO-COeKQ,1220
1322
1324
  zrb/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1323
- zrb/config/config.py,sha256=k_3HaOljqKWr1TKZ0Ap7_E2BRqejkVNChMMA13PqEwM,1891
1325
+ zrb/config/config.py,sha256=CBzfexBmP5cFPYuOM0SruCT4jWha73qe8YqwV9T8fdM,1625
1324
1326
  zrb/helper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1325
1327
  zrb/helper/accessories/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1326
1328
  zrb/helper/accessories/color.py,sha256=7bj2-K_sn1leXN_C9eeOWXZBfnsBAFOzfirSiM8vCMw,964
@@ -1328,9 +1330,9 @@ zrb/helper/accessories/icon.py,sha256=uKm3w5G1fV454MUhz_CZMy48AD99kBV9j2zRlJWzB1
1328
1330
  zrb/helper/accessories/name.py,sha256=e1uvU3MzuvDb5j6YIWBA048y4qeM-LfrxRKWlMehliE,1638
1329
1331
  zrb/helper/accessories/untyped_color.py,sha256=4wRbHSClbCzPRWtW-Cy2agOMozANVi7u4p8lMXMSuJg,194
1330
1332
  zrb/helper/advertisement.py,sha256=GOaCtWYL9Oj_tAg4jqsCuFsdinHaOSH_6d57y8BbsVU,912
1331
- zrb/helper/asyncio_task.py,sha256=4OCXNwioMcQz7NgmXmNsS1Ege4Cp5Ld7MlwCmJNBuVs,622
1333
+ zrb/helper/asyncio_task.py,sha256=UcE2axvWDh8GCFYtPUZCrSZ8VfRS-lsffyDEupjK1-8,1021
1332
1334
  zrb/helper/callable.py,sha256=usatPKPkK_67G9dWreaGXskOaGHd_hE8MiTWAUhfojE,563
1333
- zrb/helper/cli.py,sha256=S1j8hfW_zEDeycPRbJd0E8xkOZkuEZ5PNz6JO6EC8UI,2637
1335
+ zrb/helper/cli.py,sha256=cb82aZCX5NoOHQNTx3wtdKOAQJP79ky4HA6w0VjVBh0,2603
1334
1336
  zrb/helper/codemod/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1335
1337
  zrb/helper/codemod/add_argument_to_function.py,sha256=Xh5Tlb4iO3cv4dRR12ms9kf0j-atVSnCh88TuqCof8I,1435
1336
1338
  zrb/helper/codemod/add_argument_to_function_call.py,sha256=dFFqQ885gG_ZCBgax6sjkWx7s7cIk1amLhTC0Ge_zZo,1186
@@ -1377,18 +1379,14 @@ zrb/helper/util.py,sha256=s3Wdg-hYbhkttW7o2-C8erQqMuxStSpR8f2psgZzP68,3836
1377
1379
  zrb/runner.py,sha256=9huyeIi8gqbMQV3u6CRBeB8s9WVynECR0jECuCAYm9c,261
1378
1380
  zrb/shell-scripts/_common-util.sh,sha256=8zvSAbDp8z4JWxMT6s6bSnNBCfCB88gLLpK5LOhyPBg,229
1379
1381
  zrb/shell-scripts/ensure-docker-is-installed.sh,sha256=8CL5gYs428LPWcF43X-1O1i2YyWAOGzXTKZttiS9J1Q,2999
1380
- zrb/shell-scripts/ensure-podman-is-installed.sh,sha256=RvLLQIBN5cfLEsFkTpomgl_PxJZ6z0Wl0VGGtjIA5JM,1529
1381
1382
  zrb/shell-scripts/ensure-rsync-is-installed.sh,sha256=ffr8avoCUSoDQkEBWmeelgn-EtF9reQTaM0wfW6B0hc,1146
1382
1383
  zrb/shell-scripts/ensure-ssh-is-installed.sh,sha256=w5pCzsbEa3bnxT07q6gX0nWn-7HXsMiwBRrg7dMD57w,2414
1383
1384
  zrb/shell-scripts/notify.ps1,sha256=6_xPoIwuxARpYljcjVV-iRJS3gJqGfx-B6kj719cJ9o,843
1384
- zrb/shell-scripts/rsync-util.sh,sha256=QzdhSBvUNMxB4U2B4m0Dxg9czGckRjB7Vk4A1ObG0-k,353
1385
- zrb/shell-scripts/ssh-util.sh,sha256=9lXDzw6oO8HuA4vdbfps_uQMMwKyNYX9fZkZgpK52g8,401
1386
1385
  zrb/task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1387
1386
  zrb/task/any_task.py,sha256=SlAp6LY-8TGopaQm3eZD3ZEx3wxvCff8UfcnYyu-aiY,39344
1388
1387
  zrb/task/any_task_event_handler.py,sha256=ay4v7eXatF4sCiXpUYaHVJZljpnKlvBbFIwvZqXW8Mo,541
1389
- zrb/task/base_remote_cmd_task.py,sha256=EhAT7grnIxFeMfwm8FV6GF6n0kOYESAyIIVzqgZBRBg,12324
1390
1388
  zrb/task/base_task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1391
- zrb/task/base_task/base_task.py,sha256=mHTgXmGROkGZw97HLpk-XE5lfhDL0jYyX9okaOTZgxY,20439
1389
+ zrb/task/base_task/base_task.py,sha256=iieOSoDvKVJpDpTH1LdO-uA1yBPRHxMDPyEgS0wKwmc,21434
1392
1390
  zrb/task/base_task/component/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1393
1391
  zrb/task/base_task/component/base_task_model.py,sha256=EuTWvY54mD_ATy4-VFZw4uCOu3Mfe8hgZikwTnIjmkY,10381
1394
1392
  zrb/task/base_task/component/common_task_model.py,sha256=X_Ubu5kNycQJ-dFiLMARvC6GWQ9pIjBCdxh3MVelc-A,13544
@@ -1396,22 +1394,22 @@ zrb/task/base_task/component/pid_model.py,sha256=RjJIqOpavucDssnd3q3gT4q8QnP8I9S
1396
1394
  zrb/task/base_task/component/renderer.py,sha256=xxcMbHhWPMUgAO3DWec_E-OeqlCKtwCBGFzLoc5g8BE,4484
1397
1395
  zrb/task/base_task/component/trackers.py,sha256=3G4dMhh1kVaJrmRwiGzWQSbr1fB-w9xXjBKz_vRifYc,2063
1398
1396
  zrb/task/checker.py,sha256=mh_2ajZqpNdJQ8AFVQ6ZArYtBUOXST3aZSisINuEivk,3400
1399
- zrb/task/cmd_task.py,sha256=B3kRtpb0QVjusPWAMLjpfGxvAdEfgD9_N0jiU55S3rA,14718
1397
+ zrb/task/cmd_task.py,sha256=BcWXiikCQqFHIYs-PPSnvFTM10HKntj76h3wCE6sqKs,14701
1400
1398
  zrb/task/decorator.py,sha256=SuajollezbwiSOs29bv8A6PmFcFs_RH4pr4TPcQPDHM,3081
1401
- zrb/task/docker_compose_start_task.py,sha256=n4mLejebyy8sF4rbcfWZucPcBiqPSkDAdGZvOhk4Xt8,5335
1402
- zrb/task/docker_compose_task.py,sha256=QGJ-jlD0jCKIb5avzri1Z29zdIL3Cn6m4kaEOko3U6M,15615
1403
- zrb/task/flow_task.py,sha256=RPci5Inc_QImq9sYI3SnDODeqMtwhO2DA7axbFoZPEQ,5158
1399
+ zrb/task/docker_compose_start_task.py,sha256=XjE2bV9bnqaMhgtElR-gC1as1uM9_-ozX7qzubyteQY,5453
1400
+ zrb/task/docker_compose_task.py,sha256=6nywyIMrOuQMJ5bsDaWEyUm91NkIP6HL0nnmKI_IEf8,17081
1401
+ zrb/task/flow_task.py,sha256=wkvvUCrt6n1ul-o3STCPMdrlBuGBrNCRgtRzGyXir9o,5079
1404
1402
  zrb/task/http_checker.py,sha256=gXqBlEStMnIhzmQ7FX9Zo-nG3-wsiVEML8IOJiSG5JI,5705
1405
- zrb/task/looper.py,sha256=zInLRgcQlReGXz4Ffxc2W99RovSChj6kHuGEGmaPb-Q,1432
1403
+ zrb/task/looper.py,sha256=tYMG9rTMEd5-FP0CIBfbcWfahsg6W-ED66AV5C-kCrk,1441
1406
1404
  zrb/task/notifier.py,sha256=xjqT5Vydr_0cc1m4jA-odhHMZg6CSGciFCs0rhVkvPM,6265
1407
1405
  zrb/task/parallel.py,sha256=Xz9az51hHfkeEmOEo3Xb-B7GPoOT_DxuakpAfCbzzV0,1176
1408
1406
  zrb/task/path_checker.py,sha256=xkOpxlLUaEXlsiWh1o-ghqQNWYadXvTl3QV4yeIC2Rc,4677
1409
1407
  zrb/task/path_watcher.py,sha256=aKWhT7Kuc_UJMr8SSY7ZZym-_rV526tEeIaKRRz3XYU,7419
1410
1408
  zrb/task/port_checker.py,sha256=SG2yrAxdJgxdR6xymviB48K529o3Rnq_WhDJZDKgAQg,4605
1411
1409
  zrb/task/recurring_task.py,sha256=wtZhi0DCDdVM7ecIgoXghQPTOQemrEvCY8xDJoaG1mo,7444
1412
- zrb/task/remote_cmd_task.py,sha256=jl4lcAiRwy30H-wGVJr4111xGZ7n3p0cTL2zRPi8dqY,3970
1410
+ zrb/task/remote_cmd_task.py,sha256=-kNkRVSIDrNJcVRBfMpc-fXYOHh6Fs2PTsiOzWwimTM,5793
1413
1411
  zrb/task/resource_maker.py,sha256=e6nmFJsVHHo8_sW5F-lBfkO_2RszrlXNoubh4rwM6UY,7644
1414
- zrb/task/rsync_task.py,sha256=qu5vyQUIkypgLH-974qICNtjs3ZGg3Cp1e904kxs44I,4235
1412
+ zrb/task/rsync_task.py,sha256=NdfKtendGyH9Kg17hEsavl1NoeIJ04FTii2OaXg_S6g,6022
1415
1413
  zrb/task/server.py,sha256=zC8swQOu_3YkRtGFXuRGZqz6yEu--ZhNRgNwbR44uUA,6741
1416
1414
  zrb/task/task.py,sha256=iHDyUMUh1uVGlMCQdVewdT3epCOHKNRKblC3G1WSKS0,2493
1417
1415
  zrb/task/time_watcher.py,sha256=v01whCMTvul_vraVccy8A9rDBk-CL7HFvPOu8g1BC5s,5130
@@ -1434,8 +1432,8 @@ zrb/task_input/multiline_input.py,sha256=KNto5k5X1C6KE_A-vX0OjpQyjgCRJ6BR2PwHXNQ
1434
1432
  zrb/task_input/password_input.py,sha256=95NlJ9xIq7z_evpAyR2XsBpeuWpBXd2Ezn3P7oDOttk,4360
1435
1433
  zrb/task_input/str_input.py,sha256=0nje7vI9fs_xqQBbmKB8Yn7wevlWp9Qebv7f8-GmiXs,4350
1436
1434
  zrb/task_input/task_input.py,sha256=WTj_qIQyRs-04-VotjNTcVyIuf6b2afInVoCQHoRmr0,2327
1437
- zrb-0.26.0.dist-info/LICENSE,sha256=WfnGCl8G60EYOPAEkuc8C9m9pdXWDe08NsKj3TBbxsM,728
1438
- zrb-0.26.0.dist-info/METADATA,sha256=v5Q0BGRSOW4Hy5vvsMm8Mp4Tp5t-o1HK4PbM50YzlvA,17085
1439
- zrb-0.26.0.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
1440
- zrb-0.26.0.dist-info/entry_points.txt,sha256=xTgXc1kBKYhJHEujdaSPHUcJT3-hbyP1mLgwkv-5sSk,40
1441
- zrb-0.26.0.dist-info/RECORD,,
1435
+ zrb-0.28.0.dist-info/LICENSE,sha256=WfnGCl8G60EYOPAEkuc8C9m9pdXWDe08NsKj3TBbxsM,728
1436
+ zrb-0.28.0.dist-info/METADATA,sha256=8s4Xo9naikz0tPFxZQNrd56DsKyZnP-uwENR26YzldQ,17094
1437
+ zrb-0.28.0.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
1438
+ zrb-0.28.0.dist-info/entry_points.txt,sha256=xTgXc1kBKYhJHEujdaSPHUcJT3-hbyP1mLgwkv-5sSk,40
1439
+ zrb-0.28.0.dist-info/RECORD,,
@@ -1,8 +0,0 @@
1
- from typing import Any
2
-
3
-
4
- def activate_all_compose_profile(*args: Any, **kwargs: Any) -> str:
5
- compose_profile_str = ",".join(
6
- ["monitoring", "monolith", "microservices", "kafka", "postgres", "rabbitmq"]
7
- )
8
- return f"export COMPOSE_PROFILES={compose_profile_str}"
@@ -1,24 +0,0 @@
1
- from typing import Any
2
-
3
- from ..support._helper import get_support_container_compose_profiles
4
-
5
-
6
- def activate_microservices_compose_profile(*args: Any, **kwargs: Any) -> str:
7
- compose_profiles = _get_microservices_container_compose_profiles(*args, **kwargs)
8
- compose_profile_str = ",".join(compose_profiles)
9
- return f"export COMPOSE_PROFILES={compose_profile_str}"
10
-
11
-
12
- def should_start_microservices_container(*args: Any, **kwargs: Any) -> bool:
13
- if not kwargs.get("local_snake_zrb_app_name", True):
14
- return False
15
- compose_profiles = _get_microservices_container_compose_profiles(*args, **kwargs)
16
- return len(compose_profiles) > 0
17
-
18
-
19
- def _get_microservices_container_compose_profiles(
20
- *args: Any, **kwargs: Any
21
- ) -> list[str]:
22
- compose_profiles = get_support_container_compose_profiles(*args, **kwargs)
23
- compose_profiles.append("microservices")
24
- return compose_profiles
@@ -1,22 +0,0 @@
1
- from typing import Any
2
-
3
- from ..support._helper import get_support_container_compose_profiles
4
-
5
-
6
- def activate_monolith_compose_profile(*args: Any, **kwargs: Any) -> str:
7
- compose_profiles = _get_monolith_container_compose_profiles(*args, **kwargs)
8
- compose_profile_str = ",".join(compose_profiles)
9
- return f"export COMPOSE_PROFILES={compose_profile_str}"
10
-
11
-
12
- def should_start_monolith_container(*args: Any, **kwargs: Any) -> bool:
13
- if not kwargs.get("local_snake_zrb_app_name", True):
14
- return False
15
- compose_profiles = _get_monolith_container_compose_profiles(*args, **kwargs)
16
- return len(compose_profiles) > 0
17
-
18
-
19
- def _get_monolith_container_compose_profiles(*args: Any, **kwargs: Any) -> list[str]:
20
- compose_profiles = get_support_container_compose_profiles(*args, **kwargs)
21
- compose_profiles.append("monolith")
22
- return compose_profiles
@@ -1,30 +0,0 @@
1
- from typing import Any
2
-
3
- from zrb import Task
4
-
5
-
6
- def activate_support_compose_profile(*args: Any, **kwargs: Any) -> str:
7
- compose_profiles = get_support_container_compose_profiles(*args, **kwargs)
8
- compose_profile_str = ",".join(compose_profiles)
9
- return f"export COMPOSE_PROFILES={compose_profile_str}"
10
-
11
-
12
- def should_start_support_container(*args: Any, **kwargs: Any) -> bool:
13
- if not kwargs.get("local_snake_zrb_app_name", True):
14
- return False
15
- compose_profiles = get_support_container_compose_profiles(*args, **kwargs)
16
- return len(compose_profiles) > 0
17
-
18
-
19
- def get_support_container_compose_profiles(*args: Any, **kwargs: Any) -> list[str]:
20
- task: Task = kwargs.get("_task")
21
- env_map = task.get_env_map()
22
- compose_profiles: list[str] = []
23
- if env_map.get("APP_DB_CONNECTION", "").startswith("postgresql"):
24
- compose_profiles.append("postgres")
25
- broker_type = env_map.get("APP_BROKER_TYPE", "rabbitmq")
26
- if broker_type in ["rabbitmq", "kafka"]:
27
- compose_profiles.append(broker_type)
28
- if kwargs.get("enable_snake_zrb_app_name_monitoring", False):
29
- compose_profiles.append("monitoring")
30
- return compose_profiles
@@ -1,55 +0,0 @@
1
- set -e
2
- if command_exists podman
3
- then
4
- log_info "Podman is already installed."
5
- else
6
- log_info "Installing Podman..."
7
- if [ "$OS_TYPE" = "Darwin" ]
8
- then
9
- if command_exists brew
10
- then
11
- brew install --cask podman
12
- log_info "Please start Podman before proceeding."
13
- else
14
- log_info "Homebrew not found. Please install Homebrew and try again."
15
- exit 1
16
- fi
17
- elif [ "$OS_TYPE" = "Linux" ]
18
- then
19
- if command_exists apt
20
- then
21
- try_sudo apt update
22
- try_sudo apt install -y podman
23
- elif command_exists yum
24
- then
25
- try_sudo yum install -y podman
26
- elif command_exists dnf
27
- then
28
- try_sudo dnf install -y podman
29
- elif command_exists pacman
30
- then
31
- try_sudo pacman -Syu --noconfirm podman
32
- else
33
- log_info "No known package manager found. Please install Podman manually."
34
- exit 1
35
- fi
36
- else
37
- log_info "Unsupported OS type. Please install Podman manually."
38
- exit 1
39
- fi
40
- fi
41
-
42
- if ! command_exists podman-compose
43
- then
44
- log_info "Installing Podman Compose plugin..."
45
- pip install podman-compose
46
- fi
47
-
48
- # Check Podman Compose plugin installation
49
- if command_exists podman && command_exists podman-compose
50
- then
51
- log_info "Podman Compose plugin is already installed."
52
- else
53
- log_info "Podman Compose plugin is not installed or podman is not running. Please check your installation."
54
- exit 1
55
- fi
@@ -1,12 +0,0 @@
1
- set -e
2
- auth_rsync(){
3
- if [ "$_CONFIG_SSH_KEY" != "" ]
4
- then
5
- rsync --mkpath -avz -e "ssh -i $_CONFIG_SSH_KEY -p $_CONFIG_PORT" $@
6
- elif [ "$_CONFIG_PASSWORD" != "" ]
7
- then
8
- sshpass -p "$_CONFIG_PASSWORD" rsync --mkpath -avz -e "ssh -p $_CONFIG_PORT" $@
9
- else
10
- rsync --mkpath -avz -e "ssh -p $_CONFIG_PORT" $@
11
- fi
12
- }
@@ -1,12 +0,0 @@
1
- set -e
2
- auth_ssh(){
3
- if [ "$_CONFIG_SSH_KEY" != "" ]
4
- then
5
- ssh -t -p "$_CONFIG_PORT" -i "$_CONFIG_SSH_KEY" "${_CONFIG_USER}@${_CONFIG_HOST}" "$1"
6
- elif [ "$_CONFIG_PASSWORD" != "" ]
7
- then
8
- sshpass -p "$_CONFIG_PASSWORD" ssh -t -p "$_CONFIG_PORT" "${_CONFIG_USER}@${_CONFIG_HOST}" "$1"
9
- else
10
- ssh -t -p "$_CONFIG_PORT" "${_CONFIG_USER}@${_CONFIG_HOST}" "$1"
11
- fi
12
- }