zrb 0.25.1__py3-none-any.whl → 0.26.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/action/runner.py +2 -0
- zrb/builtin/__init__.py +4 -0
- zrb/builtin/docker/prune.py +11 -3
- zrb/builtin/monorepo/__init__.py +7 -0
- zrb/builtin/monorepo/_config.py +11 -0
- zrb/builtin/monorepo/_group.py +3 -0
- zrb/builtin/monorepo/_task.py +99 -0
- zrb/builtin/monorepo/add.py +48 -0
- zrb/builtin/monorepo/pull.py +23 -0
- zrb/builtin/monorepo/push.py +38 -0
- zrb/builtin/project/_input.py +2 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend/package-lock.json +4443 -0
- zrb/builtin/project/add/fastapp/crud/nodejs/codemod/package-lock.json +3 -3
- zrb/helper/asyncio_task.py +26 -0
- zrb/helper/cli.py +0 -1
- zrb/task/base_task/base_task.py +1 -1
- zrb/task/cmd_task.py +2 -7
- {zrb-0.25.1.dist-info → zrb-0.26.1.dist-info}/METADATA +1 -1
- {zrb-0.25.1.dist-info → zrb-0.26.1.dist-info}/RECORD +22 -13
- {zrb-0.25.1.dist-info → zrb-0.26.1.dist-info}/LICENSE +0 -0
- {zrb-0.25.1.dist-info → zrb-0.26.1.dist-info}/WHEEL +0 -0
- {zrb-0.25.1.dist-info → zrb-0.26.1.dist-info}/entry_points.txt +0 -0
zrb/action/runner.py
CHANGED
@@ -5,6 +5,7 @@ from typing import Any, Union
|
|
5
5
|
import click
|
6
6
|
|
7
7
|
from zrb.helper.accessories.color import colored
|
8
|
+
from zrb.helper.asyncio_task import stop_asyncio_sync
|
8
9
|
from zrb.helper.log import logger
|
9
10
|
from zrb.helper.typecheck import typechecked
|
10
11
|
from zrb.task.any_task import AnyTask
|
@@ -120,6 +121,7 @@ class Runner:
|
|
120
121
|
try:
|
121
122
|
function(*args, **kwargs)
|
122
123
|
except Exception:
|
124
|
+
stop_asyncio_sync()
|
123
125
|
sys.exit(1)
|
124
126
|
finally:
|
125
127
|
task.clear_xcom()
|
zrb/builtin/__init__.py
CHANGED
@@ -24,6 +24,7 @@ from zrb.builtin.eval import evaluate
|
|
24
24
|
from zrb.builtin.explain import explain_group, explain_tasks
|
25
25
|
from zrb.builtin.git import clear_git_branch, get_git_file_changes, git_group
|
26
26
|
from zrb.builtin.md5 import hash_text_md5, md5_group, sum_file_md5
|
27
|
+
from zrb.builtin.monorepo import add_to_monorepo, pull_from_monorepo, push_to_monorepo
|
27
28
|
from zrb.builtin.process import (
|
28
29
|
get_process_pid_by_name,
|
29
30
|
get_process_pid_by_port,
|
@@ -113,6 +114,9 @@ assert add_project_tasks
|
|
113
114
|
assert add_cmd_task
|
114
115
|
assert add_docker_compose_task
|
115
116
|
assert add_python_task
|
117
|
+
assert add_to_monorepo
|
118
|
+
assert pull_from_monorepo
|
119
|
+
assert push_to_monorepo
|
116
120
|
assert ubuntu_group
|
117
121
|
assert ubuntu_install_group
|
118
122
|
assert update_ubuntu
|
zrb/builtin/docker/prune.py
CHANGED
@@ -1,15 +1,23 @@
|
|
1
1
|
from zrb.builtin.docker._group import docker_group
|
2
2
|
from zrb.runner import runner
|
3
3
|
from zrb.task.cmd_task import CmdTask
|
4
|
+
from zrb.task_input.bool_input import BoolInput
|
4
5
|
|
5
6
|
prune_docker = CmdTask(
|
6
7
|
name="prune",
|
7
8
|
group=docker_group,
|
8
9
|
description="Prune unused images and volumes",
|
10
|
+
inputs=[
|
11
|
+
BoolInput(
|
12
|
+
name="all", shortcut="a", prompt="Remove all unused images", default=False
|
13
|
+
),
|
14
|
+
BoolInput(
|
15
|
+
name="volume", shortcut="v", prompt="Prune anonymous volume", default=False
|
16
|
+
),
|
17
|
+
],
|
9
18
|
cmd=[
|
10
|
-
"docker system prune -
|
11
|
-
"docker image prune -
|
12
|
-
"docker system prune -af --volumes",
|
19
|
+
"docker system prune -f {% if input.all %}-a{% endif %} {% if input.volume %}--volumes{% endif %}", # noqa
|
20
|
+
"docker image prune -f {% if input.all %}-a{% endif %}",
|
13
21
|
"docker system df",
|
14
22
|
],
|
15
23
|
)
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import json
|
2
|
+
import os
|
3
|
+
from collections.abc import Mapping
|
4
|
+
|
5
|
+
PROJECT_DIR = os.getenv("ZRB_PROJECT_DIR", ".")
|
6
|
+
MONOREPO_CONFIG_FILE = os.path.join(PROJECT_DIR, "monorepo.zrb.json")
|
7
|
+
MONOREPO_CONFIG: Mapping[str, Mapping[str, str]] = {}
|
8
|
+
|
9
|
+
if os.path.isfile(MONOREPO_CONFIG_FILE):
|
10
|
+
with open(MONOREPO_CONFIG_FILE, "r") as file:
|
11
|
+
MONOREPO_CONFIG = json.load(file)
|
@@ -0,0 +1,99 @@
|
|
1
|
+
import os
|
2
|
+
from datetime import datetime
|
3
|
+
|
4
|
+
from zrb.builtin.monorepo._config import MONOREPO_CONFIG, PROJECT_DIR
|
5
|
+
from zrb.builtin.monorepo._group import monorepo_group
|
6
|
+
from zrb.helper.util import to_kebab_case
|
7
|
+
from zrb.runner import runner
|
8
|
+
from zrb.task.cmd_task import CmdTask
|
9
|
+
from zrb.task_group.group import Group
|
10
|
+
from zrb.task_input.str_input import StrInput
|
11
|
+
|
12
|
+
_pull_monorepo = CmdTask(
|
13
|
+
name="pull-monorepo",
|
14
|
+
inputs=[StrInput(name="message")],
|
15
|
+
cmd=[
|
16
|
+
"git add . -A",
|
17
|
+
'git commit -m "{{input.message}}"',
|
18
|
+
'git pull origin "$(git branch --show-current)"',
|
19
|
+
],
|
20
|
+
cwd=PROJECT_DIR,
|
21
|
+
retry=0,
|
22
|
+
)
|
23
|
+
|
24
|
+
PULL_SUBREPO_UPSTREAM = _pull_monorepo
|
25
|
+
PUSH_SUBREPO_UPSTREAM = _pull_monorepo
|
26
|
+
for name, config in MONOREPO_CONFIG.items():
|
27
|
+
kebab_name = to_kebab_case(name)
|
28
|
+
group = Group(
|
29
|
+
name=kebab_name, parent=monorepo_group, description=f"Subrepo {name} management"
|
30
|
+
)
|
31
|
+
subrepo_origin = config.get("origin", "")
|
32
|
+
subrepo_folder = config.get("folder", "")
|
33
|
+
subrepo_branch = config.get("branch", "main")
|
34
|
+
|
35
|
+
# define pull subrepo
|
36
|
+
pull_subrepo = CmdTask(
|
37
|
+
name="pull",
|
38
|
+
group=group,
|
39
|
+
inputs=[
|
40
|
+
StrInput(
|
41
|
+
name="message",
|
42
|
+
shortcut="m",
|
43
|
+
prompt="Commit Messsage",
|
44
|
+
default=lambda m: f"Pulling from subrepo at {datetime.now().strftime('%Y-%m-%d %I:%M:%p')}", # noqa
|
45
|
+
)
|
46
|
+
],
|
47
|
+
cmd=[
|
48
|
+
f'if [ ! -d "{subrepo_folder}" ]',
|
49
|
+
"then",
|
50
|
+
" echo Run subtree add",
|
51
|
+
f' git subtree add --prefix "{subrepo_folder}" "{subrepo_origin}" "{subrepo_branch}"', # noqa
|
52
|
+
"fi",
|
53
|
+
"echo Run subtree pull",
|
54
|
+
"set -e",
|
55
|
+
f'git subtree pull --prefix "{subrepo_folder}" "{subrepo_origin}" "{subrepo_branch}"', # noqa
|
56
|
+
],
|
57
|
+
cwd=PROJECT_DIR,
|
58
|
+
retry=0,
|
59
|
+
)
|
60
|
+
_pull_monorepo >> pull_subrepo
|
61
|
+
linked_pull_subrepo = pull_subrepo.copy()
|
62
|
+
PULL_SUBREPO_UPSTREAM >> linked_pull_subrepo
|
63
|
+
PULL_SUBREPO_UPSTREAM = linked_pull_subrepo
|
64
|
+
runner.register(pull_subrepo)
|
65
|
+
|
66
|
+
# define push subrepo
|
67
|
+
push_subrepo = CmdTask(
|
68
|
+
name="push",
|
69
|
+
group=group,
|
70
|
+
inputs=[
|
71
|
+
StrInput(
|
72
|
+
name="message",
|
73
|
+
shortcut="m",
|
74
|
+
prompt="Commit Messsage",
|
75
|
+
default=lambda m: f"Pushing to subrepo at {datetime.now().strftime('%Y-%m-%d %I:%M:%p')}", # noqa
|
76
|
+
)
|
77
|
+
],
|
78
|
+
cmd=[
|
79
|
+
f'if [ ! -d "{subrepo_folder}" ]',
|
80
|
+
"then",
|
81
|
+
" echo Run subtree add",
|
82
|
+
f' git subtree add --prefix "{subrepo_folder}" "{subrepo_origin}" "{subrepo_branch}"', # noqa
|
83
|
+
"fi",
|
84
|
+
"echo Run subtree pull",
|
85
|
+
"set -e",
|
86
|
+
f'git subtree pull --prefix "{subrepo_folder}" "{subrepo_origin}" "{subrepo_branch}"', # noqa
|
87
|
+
"set +e",
|
88
|
+
"git add . -A",
|
89
|
+
'git commit -m "{{input.message}}"',
|
90
|
+
f'git subtree push --prefix "{subrepo_folder}" "{subrepo_origin}" "{subrepo_branch}"', # noqa
|
91
|
+
],
|
92
|
+
cwd=PROJECT_DIR,
|
93
|
+
retry=0,
|
94
|
+
)
|
95
|
+
_pull_monorepo >> push_subrepo
|
96
|
+
linked_push_subrepo = push_subrepo.copy()
|
97
|
+
PUSH_SUBREPO_UPSTREAM >> linked_push_subrepo
|
98
|
+
PUSH_SUBREPO_UPSTREAM = linked_push_subrepo
|
99
|
+
runner.register(push_subrepo)
|
@@ -0,0 +1,48 @@
|
|
1
|
+
import json
|
2
|
+
import os
|
3
|
+
from collections.abc import Mapping
|
4
|
+
|
5
|
+
from zrb.builtin.monorepo._config import (
|
6
|
+
MONOREPO_CONFIG,
|
7
|
+
MONOREPO_CONFIG_FILE,
|
8
|
+
PROJECT_DIR,
|
9
|
+
)
|
10
|
+
from zrb.builtin.monorepo._group import monorepo_group
|
11
|
+
from zrb.runner import runner
|
12
|
+
from zrb.task.any_task import AnyTask
|
13
|
+
from zrb.task.decorator import python_task
|
14
|
+
from zrb.task_input.str_input import StrInput
|
15
|
+
|
16
|
+
|
17
|
+
@python_task(
|
18
|
+
name="add",
|
19
|
+
group=monorepo_group,
|
20
|
+
inputs=[
|
21
|
+
StrInput(name="alias", shortcut="a", prompt="Repo Alias", prompt_required=True),
|
22
|
+
StrInput(name="folder", shortcut="d", prompt="Directory", prompt_required=True),
|
23
|
+
StrInput(name="origin", shortcut="o", prompt="Repo URL", prompt_required=True),
|
24
|
+
StrInput(
|
25
|
+
name="branch",
|
26
|
+
shortcut="b",
|
27
|
+
prompt="Repo Branch",
|
28
|
+
prompt_required=True,
|
29
|
+
default="main",
|
30
|
+
),
|
31
|
+
],
|
32
|
+
description="Add repo to monorepo",
|
33
|
+
runner=runner,
|
34
|
+
)
|
35
|
+
def add_to_monorepo(*args, **kwargs):
|
36
|
+
task: AnyTask = kwargs.get("_task")
|
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}")
|
41
|
+
config = dict(MONOREPO_CONFIG)
|
42
|
+
config[input_map.get("alias", "")] = {
|
43
|
+
"folder": input_map.get("folder", ""),
|
44
|
+
"branch": input_map.get("branch", ""),
|
45
|
+
"origin": input_map.get("origin", ""),
|
46
|
+
}
|
47
|
+
with open(MONOREPO_CONFIG_FILE, "w") as file:
|
48
|
+
json.dump(config, file, indent=2)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
from datetime import datetime
|
2
|
+
|
3
|
+
from zrb.builtin.monorepo._group import monorepo_group
|
4
|
+
from zrb.builtin.monorepo._task import PULL_SUBREPO_UPSTREAM
|
5
|
+
from zrb.runner import runner
|
6
|
+
from zrb.task.task import Task
|
7
|
+
from zrb.task_input.str_input import StrInput
|
8
|
+
|
9
|
+
pull_from_monorepo = Task(
|
10
|
+
name="pull",
|
11
|
+
group=monorepo_group,
|
12
|
+
description="Pulling from subrepos",
|
13
|
+
inputs=[
|
14
|
+
StrInput(
|
15
|
+
name="message",
|
16
|
+
shortcut="m",
|
17
|
+
prompt="Commit Messsage",
|
18
|
+
default=lambda m: f"Pulling from subrepos at {datetime.now().strftime('%Y-%m-%d %I:%M:%p')}", # noqa
|
19
|
+
)
|
20
|
+
],
|
21
|
+
)
|
22
|
+
PULL_SUBREPO_UPSTREAM >> pull_from_monorepo
|
23
|
+
runner.register(pull_from_monorepo)
|
@@ -0,0 +1,38 @@
|
|
1
|
+
import os
|
2
|
+
from datetime import datetime
|
3
|
+
|
4
|
+
from zrb.builtin.monorepo._config import PROJECT_DIR
|
5
|
+
from zrb.builtin.monorepo._group import monorepo_group
|
6
|
+
from zrb.builtin.monorepo._task import PUSH_SUBREPO_UPSTREAM
|
7
|
+
from zrb.runner import runner
|
8
|
+
from zrb.task.cmd_task import CmdTask
|
9
|
+
from zrb.task.task import Task
|
10
|
+
from zrb.task_input.str_input import StrInput
|
11
|
+
|
12
|
+
_push_monorepo = CmdTask(
|
13
|
+
name="push-monorepo",
|
14
|
+
inputs=[StrInput(name="message")],
|
15
|
+
cmd=[
|
16
|
+
"git add . -A",
|
17
|
+
'git commit -m "{{input.message}}"',
|
18
|
+
'git push origin "$(git branch --show-current)"',
|
19
|
+
],
|
20
|
+
cwd=PROJECT_DIR,
|
21
|
+
retry=0,
|
22
|
+
)
|
23
|
+
|
24
|
+
push_to_monorepo = Task(
|
25
|
+
name="push",
|
26
|
+
group=monorepo_group,
|
27
|
+
description="Pushing to subrepos",
|
28
|
+
inputs=[
|
29
|
+
StrInput(
|
30
|
+
name="message",
|
31
|
+
shortcut="m",
|
32
|
+
prompt="Commit Messsage",
|
33
|
+
default=lambda m: f"Pushing to subrepos at {datetime.now().strftime('%Y-%m-%d %I:%M:%p')}", # noqa
|
34
|
+
)
|
35
|
+
],
|
36
|
+
)
|
37
|
+
PUSH_SUBREPO_UPSTREAM >> _push_monorepo >> push_to_monorepo
|
38
|
+
runner.register(push_to_monorepo)
|
zrb/builtin/project/_input.py
CHANGED
@@ -2,12 +2,12 @@ import os
|
|
2
2
|
|
3
3
|
from zrb.task_input.str_input import StrInput
|
4
4
|
|
5
|
-
|
5
|
+
_PROJECT_DIR = os.getenv("ZRB_PROJECT_DIR", ".")
|
6
6
|
|
7
7
|
project_dir_input = StrInput(
|
8
8
|
name="project-dir",
|
9
9
|
shortcut="d",
|
10
10
|
description="Project directory",
|
11
11
|
prompt="Project directory",
|
12
|
-
default=
|
12
|
+
default=_PROJECT_DIR,
|
13
13
|
)
|