zrb 0.0.85__py3-none-any.whl → 0.0.87__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- zrb/__init__.py +4 -2
- zrb/action/runner.py +7 -3
- zrb/builtin/__init__.py +8 -22
- zrb/builtin/base64.py +1 -1
- zrb/builtin/devtool/__init__.py +20 -0
- zrb/builtin/devtool/devtool_install.py +45 -2
- zrb/builtin/devtool/docker/install.sh +8 -0
- zrb/builtin/devtool/gcloud/install.sh +8 -0
- zrb/builtin/devtool/helix/install.sh +20 -0
- zrb/builtin/devtool/helix/resource/config.toml +10 -0
- zrb/builtin/devtool/helix/resource/themes/gruvbox_transparent.toml +2 -0
- zrb/builtin/devtool/tmux/install.sh +8 -0
- zrb/builtin/devtool/zsh/install.sh +9 -0
- zrb/builtin/devtool/zsh/resource/config.sh +2 -0
- zrb/builtin/env.py +6 -3
- zrb/builtin/explain.py +129 -0
- zrb/builtin/generator/__init__.py +27 -0
- zrb/builtin/generator/app_generator/add.py +81 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/add.py +182 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_common.py +38 -0
- zrb/builtin/generator/{fastapp/template/_automate/snake_zrb_app_name/cmd/prepare-load-test.sh → app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/cmd/app-activate-venv.sh} +0 -6
- zrb/builtin/generator/{simple_python_app/template/_automate/snake_zrb_app_name/cmd/start.sh → app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/cmd/app-start.sh} +0 -9
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/cmd/pulumi-destroy.sh +1 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/cmd/pulumi-init-stack.sh +1 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/cmd/pulumi-up.sh +1 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/container.py +148 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/deployment.py +108 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/image.py +68 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/local.py +54 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/.gitignore +1 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/.gitignore +2 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/Pulumi.yaml +6 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/__main__.py +79 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/requirements.txt +3 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/state/.gitkeep +0 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/docker-compose.env +3 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/docker-compose.yml +20 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/src/.dockerignore +3 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/src/.gitignore +3 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/src/Dockerfile +7 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/src/main.py +20 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/src/requirements.txt +1 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/src/template.env +4 -0
- zrb/builtin/generator/cmd_task/add.py +14 -14
- zrb/builtin/generator/cmd_task/template/_automate/snake_zrb_task_name.py +1 -1
- zrb/builtin/generator/common/__init__.py +0 -0
- zrb/builtin/generator/common/helper.py +57 -0
- zrb/builtin/generator/common/task_factory.py +82 -0
- zrb/builtin/generator/{_common/input.py → common/task_input.py} +46 -1
- zrb/builtin/generator/docker_compose_task/add.py +16 -15
- zrb/builtin/generator/docker_compose_task/template/_automate/snake_zrb_task_name.py +1 -1
- zrb/builtin/generator/fastapp/add.py +105 -101
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_common.py +2 -1
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/activate-venv.sh +7 -0
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/{load-test.sh → app-load-test.sh} +0 -3
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-prepare-backend.sh +2 -0
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-prepare-load-test.sh +3 -0
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-start.sh +3 -0
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/pulumi-destroy.sh +0 -1
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/pulumi-init-stack.sh +1 -0
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/pulumi-up.sh +0 -1
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/container.py +1 -1
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/deployment.py +9 -3
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/frontend.py +3 -3
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/image.py +1 -1
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/load_test.py +11 -4
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/local.py +13 -4
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/local_microservices.py +4 -1
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/test.py +3 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/requirements.txt +2 -2
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/loadtest/requirements.txt +1 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/requirements.txt +3 -3
- zrb/builtin/generator/fastapp_crud/add.py +13 -126
- zrb/builtin/generator/fastapp_crud/helper.py +115 -0
- zrb/builtin/generator/fastapp_crud/task_factory.py +34 -0
- zrb/builtin/generator/fastapp_field/add.py +10 -282
- zrb/builtin/generator/fastapp_field/helper.py +283 -0
- zrb/builtin/generator/fastapp_module/add.py +22 -331
- zrb/builtin/generator/fastapp_module/helper.py +326 -0
- zrb/builtin/generator/pip_package/__init__.py +0 -0
- zrb/builtin/generator/pip_package/add.py +84 -0
- zrb/builtin/generator/pip_package/template/_automate/snake_zrb_package_name/cmd/build.sh +12 -0
- zrb/builtin/generator/{fastapp/template/_automate/snake_zrb_app_name/cmd/start.sh → pip_package/template/_automate/snake_zrb_package_name/cmd/install-symlink.sh} +2 -2
- zrb/builtin/generator/pip_package/template/_automate/snake_zrb_package_name/cmd/publish.sh +6 -0
- zrb/builtin/generator/pip_package/template/_automate/snake_zrb_package_name/local.py +60 -0
- zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/.gitignore +1 -0
- zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/README.md +79 -0
- zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/pyproject.toml +36 -0
- zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/requirements.txt +4 -0
- zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/__init__.py +2 -0
- zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/__main__.py +2 -0
- zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/util.py +2 -0
- zrb/builtin/generator/project/create.py +12 -8
- zrb/builtin/generator/project_task/task_factory.py +167 -83
- zrb/builtin/generator/project_task/template/_automate/_project/build_project_images.py +1 -1
- zrb/builtin/generator/project_task/template/_automate/_project/deploy_project.py +1 -1
- zrb/builtin/generator/project_task/template/_automate/_project/destroy_project.py +1 -1
- zrb/builtin/generator/project_task/template/_automate/_project/push_project_images.py +1 -1
- zrb/builtin/generator/project_task/template/_automate/_project/remove_project_containers.py +1 -1
- zrb/builtin/generator/project_task/template/_automate/_project/start_project.py +1 -1
- zrb/builtin/generator/project_task/template/_automate/_project/start_project_containers.py +1 -1
- zrb/builtin/generator/project_task/template/_automate/_project/stop_project_containers.py +1 -1
- zrb/builtin/generator/python_task/add.py +14 -16
- zrb/builtin/generator/python_task/template/_automate/snake_zrb_task_name.py +1 -1
- zrb/builtin/generator/simple_python_app/add.py +95 -99
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/cmd/app-activate-venv.sh +7 -0
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/cmd/app-start.sh +6 -0
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/cmd/pulumi-destroy.sh +0 -1
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/cmd/pulumi-init-stack.sh +1 -0
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/cmd/pulumi-up.sh +0 -1
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/container.py +1 -1
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/deployment.py +9 -3
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/image.py +1 -1
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/local.py +5 -2
- zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/deployment/requirements.txt +2 -2
- zrb/builtin/git.py +1 -1
- zrb/builtin/{_group.py → group.py} +2 -5
- zrb/builtin/md5.py +1 -1
- zrb/builtin/project.py +1 -1
- zrb/builtin/ubuntu.py +1 -1
- zrb/config/config.py +8 -6
- zrb/helper/accessories/color.py +5 -1
- zrb/helper/accessories/icon.py +2 -0
- zrb/helper/accessories/name.py +2 -0
- zrb/helper/advertisement.py +1 -0
- zrb/helper/cli.py +5 -1
- zrb/helper/codemod/add_argument_to_function.py +3 -0
- zrb/helper/codemod/add_argument_to_function_call.py +3 -0
- zrb/helper/codemod/add_assert_resource.py +2 -0
- zrb/helper/codemod/add_function_call.py +2 -0
- zrb/helper/codemod/add_import_module.py +3 -0
- zrb/helper/codemod/add_key_value_to_dict.py +2 -0
- zrb/helper/codemod/add_property_to_class.py +3 -0
- zrb/helper/codemod/add_upstream_to_task.py +3 -0
- zrb/helper/codemod/append_code_to_function.py +3 -0
- zrb/helper/codemod/format_code.py +2 -0
- zrb/helper/default_env.py +2 -0
- zrb/helper/docker_compose/fetch_external_env.py +3 -0
- zrb/helper/docker_compose/file.py +4 -0
- zrb/helper/env_map/fetch.py +7 -0
- zrb/helper/file/text.py +6 -0
- zrb/helper/git/detect_changes.py +4 -0
- zrb/helper/loader/load_module.py +2 -0
- zrb/helper/map/conversion.py +2 -0
- zrb/helper/string/conversion.py +5 -0
- zrb/helper/string/double_quote.py +6 -2
- zrb/helper/string/jinja.py +2 -0
- zrb/helper/string/parse_replacement.py +2 -0
- zrb/helper/util.py +13 -0
- zrb/task/any_task.py +2 -2
- zrb/task/base_task.py +16 -16
- zrb/task/base_task_composite.py +12 -9
- zrb/task/cmd_task.py +23 -12
- zrb/task/decorator.py +2 -2
- zrb/task/docker_compose_task.py +5 -5
- zrb/task/flow_task.py +5 -5
- zrb/task/http_checker.py +2 -2
- zrb/task/path_checker.py +2 -2
- zrb/task/port_checker.py +2 -2
- zrb/task/resource_maker.py +3 -5
- zrb/task_input/any_input.py +23 -0
- zrb/task_input/base_input.py +46 -43
- zrb/task_input/float_input.py +0 -1
- {zrb-0.0.85.dist-info → zrb-0.0.87.dist-info}/METADATA +16 -17
- {zrb-0.0.85.dist-info → zrb-0.0.87.dist-info}/RECORD +175 -122
- zrb/builtin/generator/_common/helper.py +0 -79
- zrb/builtin/generator/fastapp_crud/add_navigation.py +0 -32
- zrb/builtin/principle.py +0 -66
- /zrb/builtin/generator/{_common → app_generator}/__init__.py +0 -0
- /zrb/{config.toml → builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/__init__.py} +0 -0
- /zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/{build-frontend.sh → app-build-frontend.sh} +0 -0
- /zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/{test.sh → app-test.sh} +0 -0
- /zrb/builtin/generator/{fastapp/template/_automate/snake_zrb_app_name/cmd/prepare-backend.sh → pip_package/template/_automate/snake_zrb_package_name/cmd/prepare-venv.sh} +0 -0
- /zrb/task_input/{_constant.py → constant.py} +0 -0
- /zrb/task_input/{input.py → task_input.py} +0 -0
- {zrb-0.0.85.dist-info → zrb-0.0.87.dist-info}/LICENSE +0 -0
- {zrb-0.0.85.dist-info → zrb-0.0.87.dist-info}/WHEEL +0 -0
- {zrb-0.0.85.dist-info → zrb-0.0.87.dist-info}/entry_points.txt +0 -0
@@ -1,22 +1,30 @@
|
|
1
1
|
from typing import Any
|
2
|
-
from
|
3
|
-
|
4
|
-
|
5
|
-
from
|
6
|
-
from ....runner import runner
|
7
|
-
from .._common.input import (
|
2
|
+
from ..common.helper import (
|
3
|
+
validate_existing_project_dir, validate_inexisting_automation
|
4
|
+
)
|
5
|
+
from ..common.task_input import (
|
8
6
|
project_dir_input, app_name_input, app_image_name_input, http_port_input,
|
9
7
|
env_prefix_input
|
10
8
|
)
|
11
|
-
from ..
|
9
|
+
from ..common.task_factory import create_register_module
|
12
10
|
from ..project_task.task_factory import (
|
13
|
-
|
11
|
+
create_ensure_project_tasks, create_add_build_images_upstream,
|
12
|
+
create_add_deploy_upstream, create_add_destroy_upstream,
|
13
|
+
create_add_push_images_upstream, create_add_remove_containers_upstream,
|
14
|
+
create_add_start_containers_upstream, create_add_start_upstream,
|
15
|
+
create_add_stop_containers_upstream
|
14
16
|
)
|
15
|
-
from
|
17
|
+
from ...group import project_add_group
|
18
|
+
from ....task.task import Task
|
19
|
+
from ....task.decorator import python_task
|
20
|
+
from ....task.resource_maker import ResourceMaker
|
21
|
+
from ....runner import runner
|
22
|
+
from ....helper.util import to_kebab_case
|
16
23
|
|
17
24
|
import os
|
18
25
|
|
19
|
-
|
26
|
+
CURRENT_DIR = os.path.dirname(__file__)
|
27
|
+
SNAKE_APP_NAME_TPL = '{{util.to_snake_case(input.app_name)}}'
|
20
28
|
|
21
29
|
###############################################################################
|
22
30
|
# Task Definitions
|
@@ -29,18 +37,10 @@ current_dir = os.path.dirname(__file__)
|
|
29
37
|
)
|
30
38
|
async def validate(*args: Any, **kwargs: Any):
|
31
39
|
project_dir = kwargs.get('project_dir')
|
32
|
-
|
40
|
+
validate_existing_project_dir(project_dir)
|
33
41
|
app_name = kwargs.get('app_name')
|
34
|
-
|
35
|
-
|
36
|
-
)
|
37
|
-
if os.path.exists(automation_dir):
|
38
|
-
raise Exception(
|
39
|
-
f'Automation directory already exists: {automation_dir}'
|
40
|
-
)
|
41
|
-
source_dir = os.path.join(
|
42
|
-
project_dir, 'src', f'{util.to_kebab_case(app_name)}'
|
43
|
-
)
|
42
|
+
validate_inexisting_automation(project_dir, app_name)
|
43
|
+
source_dir = os.path.join(project_dir, 'src', f'{to_kebab_case(app_name)}')
|
44
44
|
if os.path.exists(source_dir):
|
45
45
|
raise Exception(f'Source already exists: {source_dir}')
|
46
46
|
|
@@ -61,7 +61,7 @@ copy_resource = ResourceMaker(
|
|
61
61
|
'ZRB_ENV_PREFIX': '{{util.coalesce(input.env_prefix, "MY").upper()}}',
|
62
62
|
'zrb-app-image-name': '{{input.app_image_name}}'
|
63
63
|
},
|
64
|
-
template_path=os.path.join(
|
64
|
+
template_path=os.path.join(CURRENT_DIR, 'template'),
|
65
65
|
destination_path='{{ input.project_dir }}',
|
66
66
|
excludes=[
|
67
67
|
'*/deployment/venv',
|
@@ -69,96 +69,92 @@ copy_resource = ResourceMaker(
|
|
69
69
|
]
|
70
70
|
)
|
71
71
|
|
72
|
-
|
73
|
-
|
72
|
+
register_local_module = create_register_module(
|
73
|
+
module_path=f'_automate.{SNAKE_APP_NAME_TPL}.local',
|
74
|
+
alias=f'{SNAKE_APP_NAME_TPL}_local',
|
75
|
+
inputs=[app_name_input],
|
76
|
+
upstreams=[copy_resource]
|
74
77
|
)
|
75
78
|
|
76
|
-
|
77
|
-
|
79
|
+
register_container_module = create_register_module(
|
80
|
+
module_path=f'_automate.{SNAKE_APP_NAME_TPL}.container',
|
81
|
+
alias=f'{SNAKE_APP_NAME_TPL}_container',
|
82
|
+
inputs=[app_name_input],
|
83
|
+
upstreams=[register_local_module]
|
78
84
|
)
|
79
85
|
|
80
|
-
|
81
|
-
|
86
|
+
register_image_module = create_register_module(
|
87
|
+
module_path=f'_automate.{SNAKE_APP_NAME_TPL}.image',
|
88
|
+
alias=f'{SNAKE_APP_NAME_TPL}_image',
|
89
|
+
inputs=[app_name_input],
|
90
|
+
upstreams=[register_container_module]
|
82
91
|
)
|
83
92
|
|
84
|
-
|
85
|
-
|
93
|
+
register_deployment_module = create_register_module(
|
94
|
+
module_path=f'_automate.{SNAKE_APP_NAME_TPL}.deployment',
|
95
|
+
alias=f'{SNAKE_APP_NAME_TPL}_deployment',
|
96
|
+
inputs=[app_name_input],
|
97
|
+
upstreams=[register_image_module]
|
86
98
|
)
|
87
99
|
|
88
|
-
|
100
|
+
ensure_project_tasks = create_ensure_project_tasks(
|
89
101
|
upstreams=[copy_resource]
|
90
102
|
)
|
91
103
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
app_automation_task_var_name_tpl='start_{snake_app_name}',
|
98
|
-
upstreams=[add_project_task]
|
104
|
+
add_start_upstream = create_add_start_upstream(
|
105
|
+
upstream_module=f'_automate.{SNAKE_APP_NAME_TPL}.local',
|
106
|
+
upstream_task_var=f'start_{SNAKE_APP_NAME_TPL}',
|
107
|
+
upstreams=[ensure_project_tasks],
|
108
|
+
inputs=[app_name_input]
|
99
109
|
)
|
100
110
|
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
app_automation_task_var_name_tpl='start_{snake_app_name}_container',
|
107
|
-
upstreams=[add_project_task]
|
111
|
+
add_start_container_upstream = create_add_start_containers_upstream(
|
112
|
+
upstream_module=f'_automate.{SNAKE_APP_NAME_TPL}.container',
|
113
|
+
upstream_task_var=f'start_{SNAKE_APP_NAME_TPL}_container',
|
114
|
+
upstreams=[ensure_project_tasks],
|
115
|
+
inputs=[app_name_input]
|
108
116
|
)
|
109
117
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
app_automation_task_var_name_tpl='stop_{snake_app_name}_container',
|
116
|
-
upstreams=[add_project_task]
|
118
|
+
add_stop_container_upstream = create_add_stop_containers_upstream(
|
119
|
+
upstream_module=f'_automate.{SNAKE_APP_NAME_TPL}.container',
|
120
|
+
upstream_task_var=f'stop_{SNAKE_APP_NAME_TPL}_container',
|
121
|
+
upstreams=[ensure_project_tasks],
|
122
|
+
inputs=[app_name_input]
|
117
123
|
)
|
118
124
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
app_automation_task_var_name_tpl='remove_{snake_app_name}_container',
|
125
|
-
upstreams=[add_project_task]
|
125
|
+
add_remove_container_upstream = create_add_remove_containers_upstream(
|
126
|
+
upstream_module=f'_automate.{SNAKE_APP_NAME_TPL}.container',
|
127
|
+
upstream_task_var=f'remove_{SNAKE_APP_NAME_TPL}_container',
|
128
|
+
upstreams=[ensure_project_tasks],
|
129
|
+
inputs=[app_name_input]
|
126
130
|
)
|
127
131
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
app_automation_task_var_name_tpl='push_{snake_app_name}_image',
|
134
|
-
upstreams=[add_project_task]
|
132
|
+
add_build_image_upstream = create_add_build_images_upstream(
|
133
|
+
upstream_module=f'_automate.{SNAKE_APP_NAME_TPL}.image',
|
134
|
+
upstream_task_var=f'build_{SNAKE_APP_NAME_TPL}_image',
|
135
|
+
upstreams=[ensure_project_tasks],
|
136
|
+
inputs=[app_name_input]
|
135
137
|
)
|
136
138
|
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
app_automation_task_var_name_tpl='build_{snake_app_name}_image',
|
143
|
-
upstreams=[add_project_task]
|
139
|
+
add_push_image_upstream = create_add_push_images_upstream(
|
140
|
+
upstream_module=f'_automate.{SNAKE_APP_NAME_TPL}.image',
|
141
|
+
upstream_task_var=f'push_{SNAKE_APP_NAME_TPL}_image',
|
142
|
+
upstreams=[ensure_project_tasks],
|
143
|
+
inputs=[app_name_input]
|
144
144
|
)
|
145
145
|
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
app_automation_task_var_name_tpl='deploy_{snake_app_name}',
|
152
|
-
upstreams=[add_project_task]
|
146
|
+
add_deploy_upstream = create_add_deploy_upstream(
|
147
|
+
upstream_module=f'_automate.{SNAKE_APP_NAME_TPL}.deployment',
|
148
|
+
upstream_task_var=f'deploy_{SNAKE_APP_NAME_TPL}',
|
149
|
+
upstreams=[ensure_project_tasks],
|
150
|
+
inputs=[app_name_input]
|
153
151
|
)
|
154
152
|
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
app_automation_task_var_name_tpl='destroy_{snake_app_name}',
|
161
|
-
upstreams=[add_project_task]
|
153
|
+
add_destroy_upstream = create_add_destroy_upstream(
|
154
|
+
upstream_module=f'_automate.{SNAKE_APP_NAME_TPL}.deployment',
|
155
|
+
upstream_task_var=f'destroy_{SNAKE_APP_NAME_TPL}',
|
156
|
+
upstreams=[ensure_project_tasks],
|
157
|
+
inputs=[app_name_input]
|
162
158
|
)
|
163
159
|
|
164
160
|
|
@@ -166,18 +162,18 @@ register_destroy = create_register_app_task(
|
|
166
162
|
name='simple-python-app',
|
167
163
|
group=project_add_group,
|
168
164
|
upstreams=[
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
165
|
+
register_local_module,
|
166
|
+
register_container_module,
|
167
|
+
register_image_module,
|
168
|
+
register_deployment_module,
|
169
|
+
add_start_upstream,
|
170
|
+
add_start_container_upstream,
|
171
|
+
add_stop_container_upstream,
|
172
|
+
add_remove_container_upstream,
|
173
|
+
add_build_image_upstream,
|
174
|
+
add_push_image_upstream,
|
175
|
+
add_deploy_upstream,
|
176
|
+
add_destroy_upstream
|
181
177
|
],
|
182
178
|
runner=runner
|
183
179
|
)
|
@@ -0,0 +1 @@
|
|
1
|
+
(pulumi stack select {{input.snake_zrb_app_name_pulumi_stack}} || pulumi stack init {{input.snake_zrb_app_name_pulumi_stack}})
|
@@ -1,7 +1,7 @@
|
|
1
1
|
from zrb import (
|
2
2
|
DockerComposeTask, Env, EnvFile, HTTPChecker, ServiceConfig, runner
|
3
3
|
)
|
4
|
-
from zrb.builtin.
|
4
|
+
from zrb.builtin.group import project_group
|
5
5
|
from ._common import (
|
6
6
|
RESOURCE_DIR, APP_DIR, local_input, host_input, https_input
|
7
7
|
)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
from zrb import CmdTask, Env, EnvFile, IntInput, StrInput, ChoiceInput, runner
|
2
|
-
from zrb.builtin.
|
2
|
+
from zrb.builtin.group import project_group
|
3
3
|
from .image import push_snake_zrb_app_name_image, image_input, image_env
|
4
4
|
from ._common import (
|
5
5
|
CURRENT_DIR, DEPLOYMENT_DIR, TEMPLATE_ENV_FILE_NAME
|
@@ -77,7 +77,10 @@ deploy_snake_zrb_app_name = CmdTask(
|
|
77
77
|
image_env,
|
78
78
|
deployment_replica_env,
|
79
79
|
],
|
80
|
-
cmd_path=
|
80
|
+
cmd_path=[
|
81
|
+
os.path.join(CURRENT_DIR, 'cmd', 'pulumi-init-stack.sh'),
|
82
|
+
os.path.join(CURRENT_DIR, 'cmd', 'pulumi-up.sh'),
|
83
|
+
]
|
81
84
|
)
|
82
85
|
runner.register(deploy_snake_zrb_app_name)
|
83
86
|
|
@@ -97,6 +100,9 @@ destroy_snake_zrb_app_name = CmdTask(
|
|
97
100
|
image_env,
|
98
101
|
deployment_replica_env,
|
99
102
|
],
|
100
|
-
cmd_path=
|
103
|
+
cmd_path=[
|
104
|
+
os.path.join(CURRENT_DIR, 'cmd', 'pulumi-init-stack.sh'),
|
105
|
+
os.path.join(CURRENT_DIR, 'cmd', 'pulumi-destroy.sh'),
|
106
|
+
]
|
101
107
|
)
|
102
108
|
runner.register(destroy_snake_zrb_app_name)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
from zrb import CmdTask, Env, EnvFile, HTTPChecker, runner
|
2
|
-
from zrb.builtin.
|
2
|
+
from zrb.builtin.group import project_group
|
3
3
|
from ._common import (
|
4
4
|
CURRENT_DIR, APP_DIR, TEMPLATE_ENV_FILE_NAME,
|
5
5
|
local_input, host_input, https_input
|
@@ -36,7 +36,10 @@ start_snake_zrb_app_name = CmdTask(
|
|
36
36
|
default='zrbAppHttpPort'
|
37
37
|
)
|
38
38
|
],
|
39
|
-
cmd_path=
|
39
|
+
cmd_path=[
|
40
|
+
os.path.join(CURRENT_DIR, 'cmd', 'app-activate-venv.sh'),
|
41
|
+
os.path.join(CURRENT_DIR, 'cmd', 'app-start.sh'),
|
42
|
+
],
|
40
43
|
checkers=[
|
41
44
|
HTTPChecker(
|
42
45
|
name='check-kebab-zrb-app-name',
|
zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/deployment/requirements.txt
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
pulumi>=3.0.0,<4.0.0
|
2
|
-
pulumi-kubernetes>=3.0.0,<4.
|
3
|
-
python-dotenv==0.
|
2
|
+
pulumi-kubernetes>=3.0.0,<4.2.0
|
3
|
+
python-dotenv==1.0.0
|
zrb/builtin/git.py
CHANGED
@@ -15,11 +15,8 @@ ubuntu_group = Group(
|
|
15
15
|
ubuntu_install_group = Group(
|
16
16
|
name='install', description='Install things on ubuntu', parent=ubuntu_group
|
17
17
|
)
|
18
|
-
|
19
|
-
name='
|
20
|
-
)
|
21
|
-
principle_show_group = Group(
|
22
|
-
name='show', description='Showing principles', parent=principle_group
|
18
|
+
explain_group = Group(
|
19
|
+
name='explain', description='Explain things'
|
23
20
|
)
|
24
21
|
base64_group = Group(
|
25
22
|
name='base64', description='Base64 operations'
|
zrb/builtin/md5.py
CHANGED
zrb/builtin/project.py
CHANGED
zrb/builtin/ubuntu.py
CHANGED
zrb/config/config.py
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
from ..helper.string.conversion import to_boolean, to_logging_level
|
2
|
+
from typeguard import typechecked
|
2
3
|
import os
|
3
|
-
import
|
4
|
+
import importlib.metadata as metadata
|
4
5
|
|
5
6
|
|
6
|
-
|
7
|
+
@typechecked
|
8
|
+
def get_version() -> str:
|
7
9
|
try:
|
8
|
-
|
9
|
-
|
10
|
-
except pkg_resources.DistributionNotFound:
|
10
|
+
return metadata.version("zrb")
|
11
|
+
except metadata.PackageNotFoundError:
|
11
12
|
import flit
|
12
13
|
meta = flit.read_module_metadata("zrb")
|
13
|
-
return meta["module"]["version"]
|
14
|
+
return str(meta["module"]["version"])
|
14
15
|
|
15
16
|
|
17
|
+
@typechecked
|
16
18
|
def get_current_shell() -> str:
|
17
19
|
current_shell = os.getenv('SHELL', '')
|
18
20
|
if current_shell.endswith('zsh'):
|
zrb/helper/accessories/color.py
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
from typing import Iterable, Optional
|
2
|
+
from typeguard import typechecked
|
2
3
|
from termcolor import colored as term_colored, COLORS
|
3
4
|
import random
|
4
5
|
|
5
6
|
|
6
|
-
|
7
|
+
@typechecked
|
8
|
+
def get_random_color() -> str:
|
7
9
|
colors = [
|
8
10
|
'green', 'yellow', 'blue', 'magenta', 'cyan', 'white', 'light_green',
|
9
11
|
'light_yellow', 'light_blue', 'light_magenta', 'light_cyan',
|
@@ -11,10 +13,12 @@ def get_random_color():
|
|
11
13
|
return random.choice(colors)
|
12
14
|
|
13
15
|
|
16
|
+
@typechecked
|
14
17
|
def is_valid_color(color: str) -> bool:
|
15
18
|
return color in COLORS
|
16
19
|
|
17
20
|
|
21
|
+
@typechecked
|
18
22
|
def colored(
|
19
23
|
text: str,
|
20
24
|
color: Optional[str] = None,
|
zrb/helper/accessories/icon.py
CHANGED
zrb/helper/accessories/name.py
CHANGED
zrb/helper/advertisement.py
CHANGED
zrb/helper/cli.py
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
+
from typeguard import typechecked
|
1
2
|
from ..runner import runner
|
2
|
-
from .loader.load_module import load_module
|
3
3
|
from ..config.config import init_scripts, should_load_builtin
|
4
|
+
from .loader.load_module import load_module
|
4
5
|
from .log import logger
|
5
6
|
from .accessories.color import colored
|
6
7
|
|
@@ -9,6 +10,7 @@ import os
|
|
9
10
|
import sys
|
10
11
|
|
11
12
|
|
13
|
+
@typechecked
|
12
14
|
def create_cli() -> click.Group:
|
13
15
|
cli = click.Group(name='zrb', help='Super framework for your super app.')
|
14
16
|
# load from ZRB_INIT_SCRIPTS environment
|
@@ -31,6 +33,7 @@ def create_cli() -> click.Group:
|
|
31
33
|
return cli
|
32
34
|
|
33
35
|
|
36
|
+
@typechecked
|
34
37
|
def _load_zrb_init(project_dir: str):
|
35
38
|
project_script = os.path.join(project_dir, 'zrb_init.py')
|
36
39
|
if not os.path.isfile(project_script):
|
@@ -43,6 +46,7 @@ def _load_zrb_init(project_dir: str):
|
|
43
46
|
load_module(script_path=project_script)
|
44
47
|
|
45
48
|
|
49
|
+
@typechecked
|
46
50
|
def _get_new_python_path(project_dir: str) -> str:
|
47
51
|
current_python_path = os.getenv('PYTHONPATH')
|
48
52
|
if current_python_path is None or current_python_path == '':
|
@@ -1,6 +1,8 @@
|
|
1
|
+
from typeguard import typechecked
|
1
2
|
import libcst as cst
|
2
3
|
|
3
4
|
|
5
|
+
@typechecked
|
4
6
|
class AddArgumentTransformer(cst.CSTTransformer):
|
5
7
|
def __init__(
|
6
8
|
self, function_name: str, argument_name: str, argument_type: str
|
@@ -26,6 +28,7 @@ class AddArgumentTransformer(cst.CSTTransformer):
|
|
26
28
|
return updated_node
|
27
29
|
|
28
30
|
|
31
|
+
@typechecked
|
29
32
|
def add_argument_to_function(
|
30
33
|
code: str, function_name: str, argument_name: str, argument_type: str
|
31
34
|
) -> str:
|
@@ -1,6 +1,8 @@
|
|
1
|
+
from typeguard import typechecked
|
1
2
|
import libcst as cst
|
2
3
|
|
3
4
|
|
5
|
+
@typechecked
|
4
6
|
class AddArgumentTransformer(cst.CSTTransformer):
|
5
7
|
def __init__(self, function_name: str, argument_name: str):
|
6
8
|
self.function_name = function_name
|
@@ -21,6 +23,7 @@ class AddArgumentTransformer(cst.CSTTransformer):
|
|
21
23
|
return updated_node
|
22
24
|
|
23
25
|
|
26
|
+
@typechecked
|
24
27
|
def add_argument_to_function_call(
|
25
28
|
code: str, function_name: str, argument_name: str
|
26
29
|
) -> str:
|
@@ -1,7 +1,9 @@
|
|
1
|
+
from typeguard import typechecked
|
1
2
|
from typing import Optional, Union, Tuple
|
2
3
|
import libcst as cst
|
3
4
|
|
4
5
|
|
6
|
+
@typechecked
|
5
7
|
def add_import_module(
|
6
8
|
code: str,
|
7
9
|
module_path: str,
|
@@ -87,6 +89,7 @@ def _get_new_import(
|
|
87
89
|
)
|
88
90
|
|
89
91
|
|
92
|
+
@typechecked
|
90
93
|
def _split_module_path(module_path) -> Tuple[str, str]:
|
91
94
|
prefix = ''
|
92
95
|
suffix = ''
|
@@ -1,7 +1,9 @@
|
|
1
|
+
from typeguard import typechecked
|
1
2
|
from typing import Optional
|
2
3
|
import libcst as cst
|
3
4
|
|
4
5
|
|
6
|
+
@typechecked
|
5
7
|
class AddPropertyTransformer(cst.CSTTransformer):
|
6
8
|
def __init__(
|
7
9
|
self,
|
@@ -51,6 +53,7 @@ class AddPropertyTransformer(cst.CSTTransformer):
|
|
51
53
|
return updated_node.with_changes(body=new_body)
|
52
54
|
|
53
55
|
|
56
|
+
@typechecked
|
54
57
|
def add_property_to_class(
|
55
58
|
code: str,
|
56
59
|
class_name: str,
|
@@ -1,6 +1,8 @@
|
|
1
|
+
from typeguard import typechecked
|
1
2
|
import libcst as cst
|
2
3
|
|
3
4
|
|
5
|
+
@typechecked
|
4
6
|
class TaskTransformer(cst.CSTTransformer):
|
5
7
|
def __init__(self, task_name: str, upstream_task_name: str):
|
6
8
|
super().__init__()
|
@@ -74,6 +76,7 @@ class TaskTransformer(cst.CSTTransformer):
|
|
74
76
|
)
|
75
77
|
|
76
78
|
|
79
|
+
@typechecked
|
77
80
|
def add_upstream_to_task(
|
78
81
|
code: str, task_name: str, upstream_task_name: str
|
79
82
|
) -> str:
|