zrb 0.24.0__py3-none-any.whl → 0.26.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.
- zrb/action/runner.py +8 -5
- zrb/advertisement.py +1 -2
- zrb/builtin/__init__.py +4 -0
- zrb/builtin/base64/decode.py +1 -1
- zrb/builtin/base64/encode.py +1 -1
- zrb/builtin/devtool/install/_helper.py +2 -1
- zrb/builtin/docker/prune.py +11 -3
- zrb/builtin/env/get.py +3 -2
- zrb/builtin/eval.py +2 -1
- zrb/builtin/git/get_file_changes.py +2 -1
- zrb/builtin/md5/hash.py +1 -1
- zrb/builtin/md5/sum.py +1 -1
- 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 +40 -0
- zrb/builtin/monorepo/pull.py +23 -0
- zrb/builtin/monorepo/push.py +35 -0
- zrb/builtin/project/_helper.py +3 -3
- zrb/builtin/project/_input.py +2 -2
- zrb/builtin/project/add/app/generator/generator.py +1 -1
- zrb/builtin/project/add/app/generator/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/snake_zrb_generator_name/snake_zrb_generator_name.py +1 -1
- zrb/builtin/project/add/app/generator/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/snake_zrb_generator_name/template/_automate/snake_zrb_app_name/container/remove.py +1 -1
- zrb/builtin/project/add/app/generator/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/snake_zrb_generator_name/template/_automate/snake_zrb_app_name/container/start.py +1 -1
- zrb/builtin/project/add/app/generator/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/snake_zrb_generator_name/template/_automate/snake_zrb_app_name/container/stop.py +1 -1
- zrb/builtin/project/add/app/generator/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/snake_zrb_generator_name/template/src/kebab-zrb-app-name/docker-compose.yml +0 -2
- zrb/builtin/project/add/app/python/python.py +1 -1
- zrb/builtin/project/add/app/python/template/_automate/snake_zrb_app_name/container/remove.py +1 -1
- zrb/builtin/project/add/app/python/template/_automate/snake_zrb_app_name/container/start.py +1 -1
- zrb/builtin/project/add/app/python/template/_automate/snake_zrb_app_name/container/stop.py +1 -1
- zrb/builtin/project/add/app/python/template/src/kebab-zrb-app-name/docker-compose.yml +0 -2
- zrb/builtin/project/add/fastapp/app/app.py +3 -1
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/_helper.py +1 -1
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/_service_config.py +1 -1
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/microservices/_helper.py +2 -2
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/monolith/_helper.py +2 -2
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/stop.py +2 -0
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/support/_helper.py +5 -3
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/frontend/build-once.sh +1 -1
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/frontend/build.sh +1 -1
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/microservices/_helper.py +3 -5
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/microservices/start.py +3 -3
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/microservices/{start_microservices.py → start_services.py} +2 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/.generator-version +1 -0
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/deployment/_common.py +5 -5
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/deployment/app_helper.py +5 -5
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/docker-compose.yml +2 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/error.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/kafka/admin.py +4 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/kafka/consumer.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/messagebus.py +4 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/mock.py +4 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/rabbitmq/admin.py +4 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/rabbitmq/consumer.py +3 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/model/repo_model.py +3 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/repo/db_repo.py +7 -6
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/repo/repo.py +2 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/repo/search_filter.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/rpc/messagebus/caller.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/rpc/messagebus/server.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/rpc/rpc.py +3 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/serializer/serializer.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/config.py +3 -4
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend/package-lock.json +4443 -0
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/helper/async_task.py +1 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/component/access_token/scheme.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/component/access_token/util.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/group/repo.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/group/rpc.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/rpc.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/user/api.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/user/model.py +3 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/user/repo.py +3 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/user/rpc.py +3 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/register_permission.py +2 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/schema/group.py +3 -5
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/schema/permission.py +1 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/schema/request.py +1 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/schema/user.py +5 -7
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/entity/activity/event.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/entity/activity/rpc.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/schema/activity.py +1 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_group_crud.py +1 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_permission_crud.py +1 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_user_crud.py +1 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_user_login.py +1 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/test_liveness_and_readiness.py +1 -1
- zrb/builtin/project/add/fastapp/crud/_task_factory.py +1 -2
- zrb/builtin/project/add/fastapp/crud/crud.py +1 -1
- zrb/builtin/project/add/fastapp/crud/nodejs/codemod/package-lock.json +3 -3
- zrb/builtin/project/add/fastapp/crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/rpc.py +2 -1
- zrb/builtin/project/add/fastapp/crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/schema/snake_zrb_entity_name.py +2 -2
- zrb/builtin/project/add/fastapp/crud/template/src/kebab-zrb-app-name/test/snake_zrb_module_name/test_snake_zrb_entity_name.py +1 -1
- zrb/builtin/project/add/fastapp/field/field.py +1 -1
- zrb/builtin/project/add/fastapp/module/_helper/create_microservice_config.py +7 -8
- zrb/builtin/project/add/fastapp/module/module.py +1 -1
- zrb/builtin/project/add/plugin/plugin.py +1 -1
- zrb/builtin/project/add/project_task/add.py +1 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/build.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/container/remove.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/container/start.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/container/stop.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/deploy.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/destroy.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/get_env.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/image/build.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/image/push.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/publish.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/start.py +2 -1
- zrb/builtin/project/add/task/cmd/add.py +1 -1
- zrb/builtin/project/add/task/docker_compose/add.py +1 -1
- zrb/builtin/project/add/task/docker_compose/template/src/kebab-zrb-task-name/docker-compose.yml +0 -2
- zrb/builtin/project/add/task/python/add.py +1 -1
- zrb/builtin/project/add/task/python/template/_automate/snake_zrb_task_name.py +1 -1
- zrb/builtin/project/create/_helper.py +1 -1
- zrb/builtin/project/create/create.py +1 -1
- zrb/builtin/say.py +3 -3
- zrb/builtin/version.py +2 -1
- zrb/config/config.py +12 -2
- zrb/helper/accessories/color.py +2 -1
- zrb/helper/advertisement.py +2 -1
- zrb/helper/asyncio_task.py +23 -0
- zrb/helper/callable.py +2 -1
- zrb/helper/cli.py +17 -3
- zrb/helper/codemod/add_import_module.py +3 -2
- zrb/helper/codemod/add_property_to_class.py +2 -1
- zrb/helper/default_env.py +2 -1
- zrb/helper/docker_compose/fetch_external_env.py +4 -2
- zrb/helper/docker_compose/file.py +3 -1
- zrb/helper/env_map/fetch.py +3 -2
- zrb/helper/file/copy_tree.py +2 -1
- zrb/helper/file/match.py +2 -2
- zrb/helper/git/detect_changes.py +1 -1
- zrb/helper/loader/load_module.py +7 -46
- zrb/helper/loader/load_script.py +57 -0
- zrb/helper/map/conversion.py +3 -1
- zrb/helper/string/jinja.py +2 -1
- zrb/helper/string/parse_replacement.py +1 -1
- zrb/helper/typing.py +5 -27
- zrb/helper/util.py +1 -1
- zrb/task/any_task.py +9 -17
- zrb/task/any_task_event_handler.py +3 -1
- zrb/task/base_remote_cmd_task.py +3 -10
- zrb/task/base_task/base_task.py +12 -8
- zrb/task/base_task/component/base_task_model.py +6 -13
- zrb/task/base_task/component/common_task_model.py +15 -22
- zrb/task/base_task/component/renderer.py +3 -1
- zrb/task/base_task/component/trackers.py +1 -1
- zrb/task/checker.py +2 -1
- zrb/task/cmd_task.py +6 -18
- zrb/task/decorator.py +3 -1
- zrb/task/docker_compose_start_task.py +27 -32
- zrb/task/docker_compose_task.py +27 -35
- zrb/task/flow_task.py +19 -17
- zrb/task/http_checker.py +3 -9
- zrb/task/looper.py +4 -2
- zrb/task/notifier.py +3 -1
- zrb/task/parallel.py +4 -4
- zrb/task/path_checker.py +6 -12
- zrb/task/path_watcher.py +5 -13
- zrb/task/port_checker.py +3 -9
- zrb/task/recurring_task.py +5 -4
- zrb/task/remote_cmd_task.py +2 -1
- zrb/task/resource_maker.py +6 -13
- zrb/task/rsync_task.py +3 -1
- zrb/task/server.py +13 -12
- zrb/task/time_watcher.py +3 -10
- zrb/task/watcher.py +2 -1
- zrb/task/wiki_task.py +4 -3
- zrb/task_env/env.py +2 -1
- zrb/task_env/env_file.py +7 -6
- zrb/task_group/group.py +8 -7
- zrb/task_input/any_input.py +4 -3
- zrb/task_input/base_input.py +5 -3
- zrb/task_input/bool_input.py +2 -1
- zrb/task_input/choice_input.py +3 -1
- zrb/task_input/float_input.py +2 -1
- zrb/task_input/int_input.py +2 -1
- zrb/task_input/multiline_input.py +3 -1
- zrb/task_input/password_input.py +2 -1
- zrb/task_input/str_input.py +2 -1
- {zrb-0.24.0.dist-info → zrb-0.26.0.dist-info}/METADATA +1 -1
- {zrb-0.24.0.dist-info → zrb-0.26.0.dist-info}/RECORD +187 -176
- {zrb-0.24.0.dist-info → zrb-0.26.0.dist-info}/LICENSE +0 -0
- {zrb-0.24.0.dist-info → zrb-0.26.0.dist-info}/WHEEL +0 -0
- {zrb-0.24.0.dist-info → zrb-0.26.0.dist-info}/entry_points.txt +0 -0
zrb/action/runner.py
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
import sys
|
2
|
+
from collections.abc import Callable, Mapping
|
3
|
+
from typing import Any, Union
|
2
4
|
|
3
5
|
import click
|
4
6
|
|
5
7
|
from zrb.helper.accessories.color import colored
|
8
|
+
from zrb.helper.asyncio_task import stop_asyncio_sync
|
6
9
|
from zrb.helper.log import logger
|
7
10
|
from zrb.helper.typecheck import typechecked
|
8
|
-
from zrb.helper.typing import Any, Callable, List, Mapping, Union
|
9
11
|
from zrb.task.any_task import AnyTask
|
10
12
|
from zrb.task_group.group import Group as TaskGroup
|
11
13
|
|
@@ -24,11 +26,11 @@ class Runner:
|
|
24
26
|
def __init__(self, env_prefix: str = ""):
|
25
27
|
logger.info(colored("Create runner", attrs=["dark"]))
|
26
28
|
self.__env_prefix = env_prefix
|
27
|
-
self.__tasks:
|
29
|
+
self.__tasks: list[AnyTask] = []
|
28
30
|
self.__registered_groups: Mapping[str, click.Group] = {}
|
29
|
-
self.__top_levels:
|
30
|
-
self.__subcommands: Mapping[str,
|
31
|
-
self.__registered_task_cli_name:
|
31
|
+
self.__top_levels: list[CliSubcommand] = []
|
32
|
+
self.__subcommands: Mapping[str, list[click.Group]] = {}
|
33
|
+
self.__registered_task_cli_name: list[str] = []
|
32
34
|
logger.info(colored("Runner created", attrs=["dark"]))
|
33
35
|
|
34
36
|
def register(self, *tasks: AnyTask):
|
@@ -119,6 +121,7 @@ class Runner:
|
|
119
121
|
try:
|
120
122
|
function(*args, **kwargs)
|
121
123
|
except Exception:
|
124
|
+
stop_asyncio_sync()
|
122
125
|
sys.exit(1)
|
123
126
|
finally:
|
124
127
|
task.clear_xcom()
|
zrb/advertisement.py
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
from zrb.helper.accessories.color import colored
|
2
2
|
from zrb.helper.advertisement import Advertisement
|
3
3
|
from zrb.helper.log import logger
|
4
|
-
from zrb.helper.typing import List
|
5
4
|
|
6
5
|
logger.debug(colored("Loading zrb.advertisement", attrs=["dark"]))
|
7
6
|
|
8
7
|
# flake8: noqa E501
|
9
8
|
|
10
|
-
advertisements:
|
9
|
+
advertisements: list[Advertisement] = [
|
11
10
|
Advertisement(
|
12
11
|
content="\n".join(
|
13
12
|
[
|
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/base64/decode.py
CHANGED
zrb/builtin/base64/encode.py
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
import os
|
2
|
+
from collections.abc import Callable
|
3
|
+
from typing import Any
|
2
4
|
|
3
5
|
from zrb.helper.file.text import read_text_file_async, write_text_file_async
|
4
6
|
from zrb.helper.typecheck import typechecked
|
5
|
-
from zrb.helper.typing import Any, Callable
|
6
7
|
from zrb.task.task import Task
|
7
8
|
|
8
9
|
|
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
|
)
|
zrb/builtin/env/get.py
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
+
from typing import Any
|
2
|
+
|
1
3
|
from zrb.builtin.env._group import env_group
|
2
4
|
from zrb.helper.accessories.color import colored
|
3
|
-
from zrb.helper.typing import Any, List
|
4
5
|
from zrb.runner import runner
|
5
6
|
from zrb.task.decorator import python_task
|
6
7
|
from zrb.task.task import Task
|
@@ -15,7 +16,7 @@ async def get_env(*args: Any, **kwargs: Any):
|
|
15
16
|
names = list(env_map.keys())
|
16
17
|
names.sort()
|
17
18
|
colored_equal = colored("=", color="grey", attrs=["dark"])
|
18
|
-
env_lines:
|
19
|
+
env_lines: list[str] = []
|
19
20
|
for name in names:
|
20
21
|
value = env_map[name]
|
21
22
|
colored_name = colored(name, color="green", attrs=["bold"])
|
zrb/builtin/eval.py
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
+
from typing import Any
|
2
|
+
|
1
3
|
from zrb.builtin.git._group import git_group
|
2
4
|
from zrb.helper.accessories.color import colored
|
3
5
|
from zrb.helper.git.detect_changes import get_modified_file_states
|
4
6
|
from zrb.helper.task import show_lines
|
5
|
-
from zrb.helper.typing import Any
|
6
7
|
from zrb.runner import runner
|
7
8
|
from zrb.task.decorator import python_task
|
8
9
|
from zrb.task_input.bool_input import BoolInput
|
zrb/builtin/md5/hash.py
CHANGED
zrb/builtin/md5/sum.py
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
import hashlib
|
2
|
+
from typing import Any
|
2
3
|
|
3
4
|
import aiofiles
|
4
5
|
|
5
6
|
from zrb.builtin.md5._group import md5_group
|
6
|
-
from zrb.helper.typing import Any
|
7
7
|
from zrb.runner import runner
|
8
8
|
from zrb.task.decorator import python_task
|
9
9
|
from zrb.task_input.str_input import StrInput
|
@@ -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
|
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
|
+
_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
|
+
)
|
25
|
+
|
26
|
+
PULL_SUBREPO_UPSTREAM = _pull_monorepo
|
27
|
+
PUSH_SUBREPO_UPSTREAM = _pull_monorepo
|
28
|
+
for name, config in MONOREPO_CONFIG.items():
|
29
|
+
kebab_name = to_kebab_case(name)
|
30
|
+
group = Group(
|
31
|
+
name=kebab_name, parent=monorepo_group, description=f"Subrepo {name} management"
|
32
|
+
)
|
33
|
+
subrepo_origin = config.get("origin", "")
|
34
|
+
subrepo_folder = config.get("folder", "")
|
35
|
+
subrepo_branch = config.get("branch", "main")
|
36
|
+
|
37
|
+
# define pull subrepo
|
38
|
+
pull_subrepo = CmdTask(
|
39
|
+
name="pull",
|
40
|
+
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
|
+
)
|
48
|
+
],
|
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
|
58
|
+
],
|
59
|
+
retry=0,
|
60
|
+
)
|
61
|
+
_pull_monorepo >> pull_subrepo
|
62
|
+
linked_pull_subrepo = pull_subrepo.copy()
|
63
|
+
PULL_SUBREPO_UPSTREAM >> linked_pull_subrepo
|
64
|
+
PULL_SUBREPO_UPSTREAM = linked_pull_subrepo
|
65
|
+
runner.register(pull_subrepo)
|
66
|
+
|
67
|
+
# define push subrepo
|
68
|
+
push_subrepo = CmdTask(
|
69
|
+
name="push",
|
70
|
+
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
|
+
)
|
78
|
+
],
|
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
|
92
|
+
],
|
93
|
+
retry=0,
|
94
|
+
)
|
95
|
+
_pull_monorepo >> push_subrepo
|
96
|
+
linked_push_subrepo = push_subrepo.copy()
|
97
|
+
PUSH_SUBREPO_UPSTREAM >> push_subrepo
|
98
|
+
PUSH_SUBREPO_UPSTREAM = linked_push_subrepo
|
99
|
+
runner.register(push_subrepo)
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import json
|
2
|
+
from collections.abc import Mapping
|
3
|
+
|
4
|
+
from zrb.builtin.monorepo._config import MONOREPO_CONFIG, MONOREPO_CONFIG_FILE
|
5
|
+
from zrb.builtin.monorepo._group import monorepo_group
|
6
|
+
from zrb.runner import runner
|
7
|
+
from zrb.task.any_task import AnyTask
|
8
|
+
from zrb.task.decorator import python_task
|
9
|
+
from zrb.task_input.str_input import StrInput
|
10
|
+
|
11
|
+
|
12
|
+
@python_task(
|
13
|
+
name="add",
|
14
|
+
group=monorepo_group,
|
15
|
+
inputs=[
|
16
|
+
StrInput(name="alias", shortcut="a", prompt="Repo Alias", prompt_required=True),
|
17
|
+
StrInput(name="folder", shortcut="d", prompt="Directory", prompt_required=True),
|
18
|
+
StrInput(name="origin", shortcut="o", prompt="Repo URL", prompt_required=True),
|
19
|
+
StrInput(
|
20
|
+
name="branch",
|
21
|
+
shortcut="b",
|
22
|
+
prompt="Repo Branch",
|
23
|
+
prompt_required=True,
|
24
|
+
default="main",
|
25
|
+
),
|
26
|
+
],
|
27
|
+
description="Add repo to monorepo",
|
28
|
+
runner=runner,
|
29
|
+
)
|
30
|
+
def add_to_monorepo(*args, **kwargs):
|
31
|
+
task: AnyTask = kwargs.get("_task")
|
32
|
+
input_map: Mapping[str, str] = task.get_input_map()
|
33
|
+
config = dict(MONOREPO_CONFIG)
|
34
|
+
config[input_map.get("alias", "")] = {
|
35
|
+
"folder": input_map.get("folder", ""),
|
36
|
+
"branch": input_map.get("branch", ""),
|
37
|
+
"origin": input_map.get("origin", ""),
|
38
|
+
}
|
39
|
+
with open(MONOREPO_CONFIG_FILE, "w") as file:
|
40
|
+
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,35 @@
|
|
1
|
+
from datetime import datetime
|
2
|
+
|
3
|
+
from zrb.builtin.monorepo._group import monorepo_group
|
4
|
+
from zrb.builtin.monorepo._task import PUSH_SUBREPO_UPSTREAM
|
5
|
+
from zrb.runner import runner
|
6
|
+
from zrb.task.cmd_task import CmdTask
|
7
|
+
from zrb.task.task import Task
|
8
|
+
from zrb.task_input.str_input import StrInput
|
9
|
+
|
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
|
+
push_to_monorepo = Task(
|
22
|
+
name="push",
|
23
|
+
group=monorepo_group,
|
24
|
+
description="Pushing to subrepos",
|
25
|
+
inputs=[
|
26
|
+
StrInput(
|
27
|
+
name="message",
|
28
|
+
shortcut="m",
|
29
|
+
prompt="Commit Messsage",
|
30
|
+
default=lambda m: f"Pushing to subrepos at {datetime.now().strftime('%Y-%m-%d %I:%M:%p')}", # noqa
|
31
|
+
)
|
32
|
+
],
|
33
|
+
)
|
34
|
+
PUSH_SUBREPO_UPSTREAM >> _push_monorepo >> push_to_monorepo
|
35
|
+
runner.register(push_to_monorepo)
|
zrb/builtin/project/_helper.py
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import os
|
2
|
+
from typing import Any, Optional
|
2
3
|
|
3
4
|
from zrb.builtin.project._input import project_dir_input
|
4
5
|
from zrb.helper import util
|
@@ -7,7 +8,6 @@ from zrb.helper.codemod.add_assert_resource import add_assert_resource
|
|
7
8
|
from zrb.helper.codemod.add_import_module import add_import_module
|
8
9
|
from zrb.helper.file.text import read_text_file_async, write_text_file_async
|
9
10
|
from zrb.helper.typecheck import typechecked
|
10
|
-
from zrb.helper.typing import Any, List, Optional
|
11
11
|
from zrb.task.any_task import AnyTask
|
12
12
|
from zrb.task.decorator import python_task
|
13
13
|
from zrb.task.task import Task
|
@@ -61,8 +61,8 @@ async def register_module_to_project(
|
|
61
61
|
@typechecked
|
62
62
|
def create_register_module(
|
63
63
|
module_path: str,
|
64
|
-
inputs: Optional[
|
65
|
-
upstreams: Optional[
|
64
|
+
inputs: Optional[list[AnyInput]] = None,
|
65
|
+
upstreams: Optional[list[AnyTask]] = None,
|
66
66
|
alias: Optional[str] = None,
|
67
67
|
task_name: str = "register-module",
|
68
68
|
) -> Task:
|
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
|
)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import os
|
2
|
+
from typing import Any
|
2
3
|
|
3
4
|
from zrb.builtin.project._helper import validate_existing_project_dir
|
4
5
|
from zrb.builtin.project._input import project_dir_input
|
@@ -13,7 +14,6 @@ from zrb.builtin.project.add.app.generator._input import (
|
|
13
14
|
from zrb.helper.accessories.color import colored
|
14
15
|
from zrb.helper.codemod.add_assert_resource import add_assert_resource
|
15
16
|
from zrb.helper.codemod.add_import_module import add_import_module
|
16
|
-
from zrb.helper.typing import Any
|
17
17
|
from zrb.helper.util import to_kebab_case, to_snake_case
|
18
18
|
from zrb.runner import runner
|
19
19
|
from zrb.task.decorator import python_task
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import os
|
2
|
+
from typing import Any
|
2
3
|
|
3
4
|
from zrb.builtin.project._helper import (
|
4
5
|
create_register_module,
|
@@ -8,7 +9,6 @@ from zrb.builtin.project._helper import (
|
|
8
9
|
from zrb.builtin.project._input import project_dir_input
|
9
10
|
from zrb.builtin.project.add.app._group import project_add_app_group
|
10
11
|
from zrb.helper.accessories.color import colored
|
11
|
-
from zrb.helper.typing import Any
|
12
12
|
from zrb.helper.util import to_kebab_case
|
13
13
|
from zrb.runner import runner
|
14
14
|
from zrb.task.decorator import python_task
|
@@ -15,7 +15,7 @@ remove_snake_zrb_app_name_container = DockerComposeTask(
|
|
15
15
|
cwd=RESOURCE_DIR,
|
16
16
|
compose_cmd="down",
|
17
17
|
compose_env_prefix="CONTAINER_ZRB_ENV_PREFIX",
|
18
|
-
compose_service_configs={"
|
18
|
+
compose_service_configs={"kebab-zrb-app-name": snake_zrb_app_name_service_config},
|
19
19
|
env_files=[compose_env_file],
|
20
20
|
envs=[
|
21
21
|
image_env,
|
@@ -26,7 +26,7 @@ start_snake_zrb_app_name_container = DockerComposeStartTask(
|
|
26
26
|
upstreams=[build_snake_zrb_app_name_image, remove_snake_zrb_app_name_container],
|
27
27
|
cwd=RESOURCE_DIR,
|
28
28
|
compose_env_prefix="CONTAINER_ZRB_ENV_PREFIX",
|
29
|
-
compose_service_configs={"
|
29
|
+
compose_service_configs={"kebab-zrb-app-name": snake_zrb_app_name_service_config},
|
30
30
|
env_files=[compose_env_file],
|
31
31
|
envs=[
|
32
32
|
image_env,
|
@@ -15,7 +15,7 @@ stop_snake_zrb_app_name_container = DockerComposeTask(
|
|
15
15
|
cwd=RESOURCE_DIR,
|
16
16
|
compose_cmd="stop",
|
17
17
|
compose_env_prefix="CONTAINER_ZRB_ENV_PREFIX",
|
18
|
-
compose_service_configs={"
|
18
|
+
compose_service_configs={"kebab-zrb-app-name": snake_zrb_app_name_service_config},
|
19
19
|
env_files=[compose_env_file],
|
20
20
|
envs=[
|
21
21
|
image_env,
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import os
|
2
|
+
from typing import Any
|
2
3
|
|
3
4
|
from zrb.builtin.project._helper import (
|
4
5
|
create_register_module,
|
@@ -17,7 +18,6 @@ from zrb.builtin.project.add.app.python._input import (
|
|
17
18
|
http_port_input,
|
18
19
|
)
|
19
20
|
from zrb.helper.accessories.color import colored
|
20
|
-
from zrb.helper.typing import Any
|
21
21
|
from zrb.helper.util import to_kebab_case
|
22
22
|
from zrb.runner import runner
|
23
23
|
from zrb.task.decorator import python_task
|
zrb/builtin/project/add/app/python/template/_automate/snake_zrb_app_name/container/remove.py
CHANGED
@@ -15,7 +15,7 @@ remove_snake_zrb_app_name_container = DockerComposeTask(
|
|
15
15
|
cwd=RESOURCE_DIR,
|
16
16
|
compose_cmd="down",
|
17
17
|
compose_env_prefix="CONTAINER_ZRB_ENV_PREFIX",
|
18
|
-
compose_service_configs={"
|
18
|
+
compose_service_configs={"kebab-zrb-app-name": snake_zrb_app_name_service_config},
|
19
19
|
env_files=[compose_env_file],
|
20
20
|
envs=[
|
21
21
|
image_env,
|
@@ -26,7 +26,7 @@ start_snake_zrb_app_name_container = DockerComposeStartTask(
|
|
26
26
|
upstreams=[build_snake_zrb_app_name_image, remove_snake_zrb_app_name_container],
|
27
27
|
cwd=RESOURCE_DIR,
|
28
28
|
compose_env_prefix="CONTAINER_ZRB_ENV_PREFIX",
|
29
|
-
compose_service_configs={"
|
29
|
+
compose_service_configs={"kebab-zrb-app-name": snake_zrb_app_name_service_config},
|
30
30
|
env_files=[compose_env_file],
|
31
31
|
envs=[
|
32
32
|
image_env,
|
@@ -15,7 +15,7 @@ stop_snake_zrb_app_name_container = DockerComposeTask(
|
|
15
15
|
cwd=RESOURCE_DIR,
|
16
16
|
compose_cmd="stop",
|
17
17
|
compose_env_prefix="CONTAINER_ZRB_ENV_PREFIX",
|
18
|
-
compose_service_configs={"
|
18
|
+
compose_service_configs={"kebab-zrb-app-name": snake_zrb_app_name_service_config},
|
19
19
|
env_files=[compose_env_file],
|
20
20
|
envs=[
|
21
21
|
image_env,
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import os
|
2
|
+
from typing import Any
|
2
3
|
|
3
4
|
from zrb.builtin.project._helper import (
|
4
5
|
create_register_module,
|
@@ -16,8 +17,8 @@ from zrb.builtin.project.add.fastapp.app._input import (
|
|
16
17
|
env_prefix_input,
|
17
18
|
http_port_input,
|
18
19
|
)
|
20
|
+
from zrb.config.config import VERSION
|
19
21
|
from zrb.helper.accessories.color import colored
|
20
|
-
from zrb.helper.typing import Any
|
21
22
|
from zrb.helper.util import to_kebab_case
|
22
23
|
from zrb.runner import runner
|
23
24
|
from zrb.task.decorator import python_task
|
@@ -70,6 +71,7 @@ copy_resource = ResourceMaker(
|
|
70
71
|
"zrb-app-image-name": "{{input.app_image_name}}",
|
71
72
|
"zrbAppHttpAuthPort": '{{util.coalesce(input.http_port, "3001") + 1}}',
|
72
73
|
"zrbAppHttpLogPort": '{{util.coalesce(input.http_port, "3001") + 2}}',
|
74
|
+
"zrbVersion": VERSION,
|
73
75
|
},
|
74
76
|
template_path=os.path.join(_CURRENT_DIR, "template"),
|
75
77
|
destination_path="{{ input.project_dir }}",
|
zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/_helper.py
CHANGED
@@ -3,6 +3,6 @@ from typing import Any
|
|
3
3
|
|
4
4
|
def activate_all_compose_profile(*args: Any, **kwargs: Any) -> str:
|
5
5
|
compose_profile_str = ",".join(
|
6
|
-
["monitoring", "monolith", "microservices", "kafka", "rabbitmq"]
|
6
|
+
["monitoring", "monolith", "microservices", "kafka", "postgres", "rabbitmq"]
|
7
7
|
)
|
8
8
|
return f"export COMPOSE_PROFILES={compose_profile_str}"
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from typing import Any
|
1
|
+
from typing import Any
|
2
2
|
|
3
3
|
from ..support._helper import get_support_container_compose_profiles
|
4
4
|
|
@@ -18,7 +18,7 @@ def should_start_microservices_container(*args: Any, **kwargs: Any) -> bool:
|
|
18
18
|
|
19
19
|
def _get_microservices_container_compose_profiles(
|
20
20
|
*args: Any, **kwargs: Any
|
21
|
-
) ->
|
21
|
+
) -> list[str]:
|
22
22
|
compose_profiles = get_support_container_compose_profiles(*args, **kwargs)
|
23
23
|
compose_profiles.append("microservices")
|
24
24
|
return compose_profiles
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from typing import Any
|
1
|
+
from typing import Any
|
2
2
|
|
3
3
|
from ..support._helper import get_support_container_compose_profiles
|
4
4
|
|
@@ -16,7 +16,7 @@ def should_start_monolith_container(*args: Any, **kwargs: Any) -> bool:
|
|
16
16
|
return len(compose_profiles) > 0
|
17
17
|
|
18
18
|
|
19
|
-
def _get_monolith_container_compose_profiles(*args: Any, **kwargs: Any) ->
|
19
|
+
def _get_monolith_container_compose_profiles(*args: Any, **kwargs: Any) -> list[str]:
|
20
20
|
compose_profiles = get_support_container_compose_profiles(*args, **kwargs)
|
21
21
|
compose_profiles.append("monolith")
|
22
22
|
return compose_profiles
|