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/__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
zrb/action/runner.py CHANGED
@@ -1,4 +1,3 @@
1
- import sys
2
1
  from collections.abc import Callable, Mapping
3
2
  from typing import Any, Union
4
3
 
@@ -122,7 +121,6 @@ class Runner:
122
121
  function(*args, **kwargs)
123
122
  except Exception:
124
123
  stop_asyncio_sync()
125
- sys.exit(1)
126
124
  finally:
127
125
  task.clear_xcom()
128
126
 
@@ -48,7 +48,7 @@ fi
48
48
  if command_exists chsh
49
49
  then
50
50
  log_info "Changing default shell to zsh..."
51
- try_sudo chsh -s zsh
51
+ chsh -s $(which zsh)
52
52
  else
53
53
  log_info "chsh command not found. Please change the default shell manually."
54
54
  fi
@@ -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)
@@ -21,7 +21,6 @@ from .._input import enable_monitoring_input
21
21
  from .._service_config import snake_zrb_app_name_service_configs
22
22
  from ..remove import remove_snake_zrb_app_name_container
23
23
  from ._group import snake_zrb_app_name_microservices_container_group
24
- from ._helper import activate_microservices_compose_profile
25
24
 
26
25
  start_snake_zrb_app_name_microservices_container = DockerComposeStartTask(
27
26
  icon="🐳",
@@ -38,7 +37,13 @@ start_snake_zrb_app_name_microservices_container = DockerComposeStartTask(
38
37
  should_execute="{{ input.local_snake_zrb_app_name}}",
39
38
  upstreams=[build_snake_zrb_app_name_image, remove_snake_zrb_app_name_container],
40
39
  cwd=RESOURCE_DIR,
41
- setup_cmd=activate_microservices_compose_profile,
40
+ compose_profiles=[
41
+ '{{"postgres" if env.APP_DB_CONNECTION.startswith("postgresql") else ""}}',
42
+ '{{"kafka" if env.APP_BROKER_TYPE == "kafka" else ""}}',
43
+ '{{"rabbitmq" if env.APP_BROKER_TYPE == "rabbitmq" else ""}}',
44
+ '{{"monitoring" if input.enable_snake_zrb_app_name_monitoring else ""}}',
45
+ "microservices",
46
+ ],
42
47
  compose_env_prefix="CONTAINER_ZRB_ENV_PREFIX",
43
48
  compose_service_configs=snake_zrb_app_name_service_configs,
44
49
  env_files=[compose_env_file],
@@ -21,7 +21,6 @@ from .._input import enable_monitoring_input
21
21
  from .._service_config import snake_zrb_app_name_service_configs
22
22
  from ..remove import remove_snake_zrb_app_name_container
23
23
  from ._group import snake_zrb_app_name_monolith_container_group
24
- from ._helper import activate_monolith_compose_profile
25
24
 
26
25
  start_snake_zrb_app_name_monolith_container = DockerComposeStartTask(
27
26
  icon="🐳",
@@ -38,7 +37,13 @@ start_snake_zrb_app_name_monolith_container = DockerComposeStartTask(
38
37
  should_execute="{{ input.local_snake_zrb_app_name}}",
39
38
  upstreams=[build_snake_zrb_app_name_image, remove_snake_zrb_app_name_container],
40
39
  cwd=RESOURCE_DIR,
41
- setup_cmd=activate_monolith_compose_profile,
40
+ compose_profiles=[
41
+ '{{"postgres" if env.APP_DB_CONNECTION.startswith("postgresql") else ""}}',
42
+ '{{"kafka" if env.APP_BROKER_TYPE == "kafka" else ""}}',
43
+ '{{"rabbitmq" if env.APP_BROKER_TYPE == "rabbitmq" else ""}}',
44
+ '{{"monitoring" if input.enable_snake_zrb_app_name_monitoring else ""}}',
45
+ "monolith",
46
+ ],
42
47
  compose_env_prefix="CONTAINER_ZRB_ENV_PREFIX",
43
48
  compose_service_configs=snake_zrb_app_name_service_configs,
44
49
  env_files=[compose_env_file],
@@ -5,7 +5,6 @@ from .._constant import RESOURCE_DIR
5
5
  from ..image._env import image_env
6
6
  from ._env import compose_env_file
7
7
  from ._group import snake_zrb_app_name_container_group
8
- from ._helper import activate_all_compose_profile
9
8
  from ._service_config import snake_zrb_app_name_service_configs
10
9
 
11
10
  remove_snake_zrb_app_name_container = DockerComposeTask(
@@ -14,8 +13,15 @@ remove_snake_zrb_app_name_container = DockerComposeTask(
14
13
  description="Remove human readable zrb app name container",
15
14
  group=snake_zrb_app_name_container_group,
16
15
  cwd=RESOURCE_DIR,
17
- setup_cmd=activate_all_compose_profile,
18
16
  compose_cmd="down",
17
+ compose_profiles=[
18
+ "postgres",
19
+ "kafka",
20
+ "rabbitmq",
21
+ "monitoring",
22
+ "monolith",
23
+ "microservices",
24
+ ],
19
25
  compose_env_prefix="CONTAINER_ZRB_ENV_PREFIX",
20
26
  compose_service_configs=snake_zrb_app_name_service_configs,
21
27
  env_files=[compose_env_file],
@@ -5,7 +5,6 @@ from .._constant import RESOURCE_DIR
5
5
  from ..image._env import image_env
6
6
  from ._env import compose_env_file, host_port_env
7
7
  from ._group import snake_zrb_app_name_container_group
8
- from ._helper import activate_all_compose_profile
9
8
  from ._service_config import snake_zrb_app_name_service_configs
10
9
 
11
10
  stop_snake_zrb_app_name_container = DockerComposeTask(
@@ -14,8 +13,15 @@ stop_snake_zrb_app_name_container = DockerComposeTask(
14
13
  description="Stop human readable zrb app name container",
15
14
  group=snake_zrb_app_name_container_group,
16
15
  cwd=RESOURCE_DIR,
17
- setup_cmd=activate_all_compose_profile,
18
16
  compose_cmd="stop",
17
+ compose_profiles=[
18
+ "postgres",
19
+ "kafka",
20
+ "rabbitmq",
21
+ "monitoring",
22
+ "monolith",
23
+ "microservices",
24
+ ],
19
25
  compose_env_prefix="CONTAINER_ZRB_ENV_PREFIX",
20
26
  compose_service_configs=snake_zrb_app_name_service_configs,
21
27
  env_files=[compose_env_file],