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.
Files changed (178) hide show
  1. zrb/__init__.py +4 -2
  2. zrb/action/runner.py +7 -3
  3. zrb/builtin/__init__.py +8 -22
  4. zrb/builtin/base64.py +1 -1
  5. zrb/builtin/devtool/__init__.py +20 -0
  6. zrb/builtin/devtool/devtool_install.py +45 -2
  7. zrb/builtin/devtool/docker/install.sh +8 -0
  8. zrb/builtin/devtool/gcloud/install.sh +8 -0
  9. zrb/builtin/devtool/helix/install.sh +20 -0
  10. zrb/builtin/devtool/helix/resource/config.toml +10 -0
  11. zrb/builtin/devtool/helix/resource/themes/gruvbox_transparent.toml +2 -0
  12. zrb/builtin/devtool/tmux/install.sh +8 -0
  13. zrb/builtin/devtool/zsh/install.sh +9 -0
  14. zrb/builtin/devtool/zsh/resource/config.sh +2 -0
  15. zrb/builtin/env.py +6 -3
  16. zrb/builtin/explain.py +129 -0
  17. zrb/builtin/generator/__init__.py +27 -0
  18. zrb/builtin/generator/app_generator/add.py +81 -0
  19. zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/add.py +182 -0
  20. zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_common.py +38 -0
  21. 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
  22. 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
  23. zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/cmd/pulumi-destroy.sh +1 -0
  24. 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
  25. zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/cmd/pulumi-up.sh +1 -0
  26. zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/container.py +148 -0
  27. zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/deployment.py +108 -0
  28. zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/image.py +68 -0
  29. zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/local.py +54 -0
  30. zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/.gitignore +1 -0
  31. zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/.gitignore +2 -0
  32. zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/Pulumi.yaml +6 -0
  33. zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/__main__.py +79 -0
  34. zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/requirements.txt +3 -0
  35. zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/state/.gitkeep +0 -0
  36. zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/docker-compose.env +3 -0
  37. zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/docker-compose.yml +20 -0
  38. zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/src/.dockerignore +3 -0
  39. zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/src/.gitignore +3 -0
  40. zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/src/Dockerfile +7 -0
  41. zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/src/main.py +20 -0
  42. zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/src/requirements.txt +1 -0
  43. zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/src/template.env +4 -0
  44. zrb/builtin/generator/cmd_task/add.py +14 -14
  45. zrb/builtin/generator/cmd_task/template/_automate/snake_zrb_task_name.py +1 -1
  46. zrb/builtin/generator/common/__init__.py +0 -0
  47. zrb/builtin/generator/common/helper.py +57 -0
  48. zrb/builtin/generator/common/task_factory.py +82 -0
  49. zrb/builtin/generator/{_common/input.py → common/task_input.py} +46 -1
  50. zrb/builtin/generator/docker_compose_task/add.py +16 -15
  51. zrb/builtin/generator/docker_compose_task/template/_automate/snake_zrb_task_name.py +1 -1
  52. zrb/builtin/generator/fastapp/add.py +105 -101
  53. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_common.py +2 -1
  54. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/activate-venv.sh +7 -0
  55. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/{load-test.sh → app-load-test.sh} +0 -3
  56. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-prepare-backend.sh +2 -0
  57. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-prepare-load-test.sh +3 -0
  58. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-start.sh +3 -0
  59. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/pulumi-destroy.sh +0 -1
  60. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/pulumi-init-stack.sh +1 -0
  61. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/pulumi-up.sh +0 -1
  62. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/container.py +1 -1
  63. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/deployment.py +9 -3
  64. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/frontend.py +3 -3
  65. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/image.py +1 -1
  66. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/load_test.py +11 -4
  67. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/local.py +13 -4
  68. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/local_microservices.py +4 -1
  69. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/test.py +3 -5
  70. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/requirements.txt +2 -2
  71. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/loadtest/requirements.txt +1 -1
  72. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/requirements.txt +3 -3
  73. zrb/builtin/generator/fastapp_crud/add.py +13 -126
  74. zrb/builtin/generator/fastapp_crud/helper.py +115 -0
  75. zrb/builtin/generator/fastapp_crud/task_factory.py +34 -0
  76. zrb/builtin/generator/fastapp_field/add.py +10 -282
  77. zrb/builtin/generator/fastapp_field/helper.py +283 -0
  78. zrb/builtin/generator/fastapp_module/add.py +22 -331
  79. zrb/builtin/generator/fastapp_module/helper.py +326 -0
  80. zrb/builtin/generator/pip_package/__init__.py +0 -0
  81. zrb/builtin/generator/pip_package/add.py +84 -0
  82. zrb/builtin/generator/pip_package/template/_automate/snake_zrb_package_name/cmd/build.sh +12 -0
  83. 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
  84. zrb/builtin/generator/pip_package/template/_automate/snake_zrb_package_name/cmd/publish.sh +6 -0
  85. zrb/builtin/generator/pip_package/template/_automate/snake_zrb_package_name/local.py +60 -0
  86. zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/.gitignore +1 -0
  87. zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/README.md +79 -0
  88. zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/pyproject.toml +36 -0
  89. zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/requirements.txt +4 -0
  90. zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/__init__.py +2 -0
  91. zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/__main__.py +2 -0
  92. zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/util.py +2 -0
  93. zrb/builtin/generator/project/create.py +12 -8
  94. zrb/builtin/generator/project_task/task_factory.py +167 -83
  95. zrb/builtin/generator/project_task/template/_automate/_project/build_project_images.py +1 -1
  96. zrb/builtin/generator/project_task/template/_automate/_project/deploy_project.py +1 -1
  97. zrb/builtin/generator/project_task/template/_automate/_project/destroy_project.py +1 -1
  98. zrb/builtin/generator/project_task/template/_automate/_project/push_project_images.py +1 -1
  99. zrb/builtin/generator/project_task/template/_automate/_project/remove_project_containers.py +1 -1
  100. zrb/builtin/generator/project_task/template/_automate/_project/start_project.py +1 -1
  101. zrb/builtin/generator/project_task/template/_automate/_project/start_project_containers.py +1 -1
  102. zrb/builtin/generator/project_task/template/_automate/_project/stop_project_containers.py +1 -1
  103. zrb/builtin/generator/python_task/add.py +14 -16
  104. zrb/builtin/generator/python_task/template/_automate/snake_zrb_task_name.py +1 -1
  105. zrb/builtin/generator/simple_python_app/add.py +95 -99
  106. zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/cmd/app-activate-venv.sh +7 -0
  107. zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/cmd/app-start.sh +6 -0
  108. zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/cmd/pulumi-destroy.sh +0 -1
  109. zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/cmd/pulumi-init-stack.sh +1 -0
  110. zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/cmd/pulumi-up.sh +0 -1
  111. zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/container.py +1 -1
  112. zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/deployment.py +9 -3
  113. zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/image.py +1 -1
  114. zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/local.py +5 -2
  115. zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/deployment/requirements.txt +2 -2
  116. zrb/builtin/git.py +1 -1
  117. zrb/builtin/{_group.py → group.py} +2 -5
  118. zrb/builtin/md5.py +1 -1
  119. zrb/builtin/project.py +1 -1
  120. zrb/builtin/ubuntu.py +1 -1
  121. zrb/config/config.py +8 -6
  122. zrb/helper/accessories/color.py +5 -1
  123. zrb/helper/accessories/icon.py +2 -0
  124. zrb/helper/accessories/name.py +2 -0
  125. zrb/helper/advertisement.py +1 -0
  126. zrb/helper/cli.py +5 -1
  127. zrb/helper/codemod/add_argument_to_function.py +3 -0
  128. zrb/helper/codemod/add_argument_to_function_call.py +3 -0
  129. zrb/helper/codemod/add_assert_resource.py +2 -0
  130. zrb/helper/codemod/add_function_call.py +2 -0
  131. zrb/helper/codemod/add_import_module.py +3 -0
  132. zrb/helper/codemod/add_key_value_to_dict.py +2 -0
  133. zrb/helper/codemod/add_property_to_class.py +3 -0
  134. zrb/helper/codemod/add_upstream_to_task.py +3 -0
  135. zrb/helper/codemod/append_code_to_function.py +3 -0
  136. zrb/helper/codemod/format_code.py +2 -0
  137. zrb/helper/default_env.py +2 -0
  138. zrb/helper/docker_compose/fetch_external_env.py +3 -0
  139. zrb/helper/docker_compose/file.py +4 -0
  140. zrb/helper/env_map/fetch.py +7 -0
  141. zrb/helper/file/text.py +6 -0
  142. zrb/helper/git/detect_changes.py +4 -0
  143. zrb/helper/loader/load_module.py +2 -0
  144. zrb/helper/map/conversion.py +2 -0
  145. zrb/helper/string/conversion.py +5 -0
  146. zrb/helper/string/double_quote.py +6 -2
  147. zrb/helper/string/jinja.py +2 -0
  148. zrb/helper/string/parse_replacement.py +2 -0
  149. zrb/helper/util.py +13 -0
  150. zrb/task/any_task.py +2 -2
  151. zrb/task/base_task.py +16 -16
  152. zrb/task/base_task_composite.py +12 -9
  153. zrb/task/cmd_task.py +23 -12
  154. zrb/task/decorator.py +2 -2
  155. zrb/task/docker_compose_task.py +5 -5
  156. zrb/task/flow_task.py +5 -5
  157. zrb/task/http_checker.py +2 -2
  158. zrb/task/path_checker.py +2 -2
  159. zrb/task/port_checker.py +2 -2
  160. zrb/task/resource_maker.py +3 -5
  161. zrb/task_input/any_input.py +23 -0
  162. zrb/task_input/base_input.py +46 -43
  163. zrb/task_input/float_input.py +0 -1
  164. {zrb-0.0.85.dist-info → zrb-0.0.87.dist-info}/METADATA +16 -17
  165. {zrb-0.0.85.dist-info → zrb-0.0.87.dist-info}/RECORD +175 -122
  166. zrb/builtin/generator/_common/helper.py +0 -79
  167. zrb/builtin/generator/fastapp_crud/add_navigation.py +0 -32
  168. zrb/builtin/principle.py +0 -66
  169. /zrb/builtin/generator/{_common → app_generator}/__init__.py +0 -0
  170. /zrb/{config.toml → builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/__init__.py} +0 -0
  171. /zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/{build-frontend.sh → app-build-frontend.sh} +0 -0
  172. /zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/{test.sh → app-test.sh} +0 -0
  173. /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
  174. /zrb/task_input/{_constant.py → constant.py} +0 -0
  175. /zrb/task_input/{input.py → task_input.py} +0 -0
  176. {zrb-0.0.85.dist-info → zrb-0.0.87.dist-info}/LICENSE +0 -0
  177. {zrb-0.0.85.dist-info → zrb-0.0.87.dist-info}/WHEEL +0 -0
  178. {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 ..._group import project_add_group
3
- from ....task.task import Task
4
- from ....task.decorator import python_task
5
- from ....task.resource_maker import ResourceMaker
6
- from ....runner import runner
7
- from .._common.input import (
2
+ from ..common.task_input import (
8
3
  project_dir_input, app_name_input, app_image_name_input, http_port_input,
9
4
  env_prefix_input
10
5
  )
11
- from .._common.helper import validate_project_dir, create_register_app_module
6
+ from ..common.helper import (
7
+ validate_existing_project_dir, validate_inexisting_automation
8
+ )
9
+ from ..common.task_factory import create_register_module
12
10
  from ..project_task.task_factory import (
13
- create_add_project_automation_task, create_register_app_task
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
  )
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
15
22
  from ....helper import util
16
23
 
17
24
  import os
18
25
 
19
- current_dir = os.path.dirname(__file__)
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,15 +37,9 @@ 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
- validate_project_dir(project_dir)
40
+ validate_existing_project_dir(project_dir)
33
41
  app_name = kwargs.get('app_name')
34
- automation_dir = os.path.join(
35
- project_dir, '_automate', util.to_snake_case(app_name)
36
- )
37
- if os.path.exists(automation_dir):
38
- raise Exception(
39
- f'Automation directory already exists: {automation_dir}'
40
- )
42
+ validate_inexisting_automation(project_dir, app_name)
41
43
  app_dir = os.path.join(
42
44
  project_dir, 'src', f'{util.to_kebab_case(app_name)}'
43
45
  )
@@ -63,7 +65,7 @@ copy_resource = ResourceMaker(
63
65
  'zrbAppHttpAuthPort': '{{util.coalesce(input.http_port, "3001") + 1}}',
64
66
  'zrbAppHttpLogPort': '{{util.coalesce(input.http_port, "3001") + 2}}'
65
67
  },
66
- template_path=os.path.join(current_dir, 'template'),
68
+ template_path=os.path.join(CURRENT_DIR, 'template'),
67
69
  destination_path='{{ input.project_dir }}',
68
70
  excludes=[
69
71
  '*/__pycache__',
@@ -75,104 +77,106 @@ copy_resource = ResourceMaker(
75
77
  ]
76
78
  )
77
79
 
78
- register_local_app_module = create_register_app_module(
79
- module='local', upstreams=[copy_resource]
80
+ register_local_module = create_register_module(
81
+ module_path=f'_automate.{SNAKE_APP_NAME_TPL}.local',
82
+ alias=f'{SNAKE_APP_NAME_TPL}_local',
83
+ inputs=[app_name_input],
84
+ upstreams=[copy_resource]
80
85
  )
81
86
 
82
- register_container_app_module = create_register_app_module(
83
- module='container', upstreams=[register_local_app_module]
87
+ register_container_module = create_register_module(
88
+ module_path=f'_automate.{SNAKE_APP_NAME_TPL}.container',
89
+ alias=f'{SNAKE_APP_NAME_TPL}_container',
90
+ inputs=[app_name_input],
91
+ upstreams=[register_local_module]
84
92
  )
85
93
 
86
- register_image_app_module = create_register_app_module(
87
- module='image', upstreams=[register_container_app_module]
94
+ register_image_module = create_register_module(
95
+ module_path=f'_automate.{SNAKE_APP_NAME_TPL}.image',
96
+ alias=f'{SNAKE_APP_NAME_TPL}_image',
97
+ inputs=[app_name_input],
98
+ upstreams=[register_container_module]
88
99
  )
89
100
 
90
- register_deployment_app_module = create_register_app_module(
91
- module='deployment', upstreams=[register_image_app_module]
101
+ register_deployment_module = create_register_module(
102
+ module_path=f'_automate.{SNAKE_APP_NAME_TPL}.deployment',
103
+ alias=f'{SNAKE_APP_NAME_TPL}_deployment',
104
+ inputs=[app_name_input],
105
+ upstreams=[register_image_module]
92
106
  )
93
107
 
94
- register_test_app_module = create_register_app_module(
95
- module='test', upstreams=[register_deployment_app_module]
108
+ register_test_module = create_register_module(
109
+ module_path=f'_automate.{SNAKE_APP_NAME_TPL}.test',
110
+ alias=f'{SNAKE_APP_NAME_TPL}_test',
111
+ inputs=[app_name_input],
112
+ upstreams=[register_deployment_module]
96
113
  )
97
114
 
98
- register_load_test_app_module = create_register_app_module(
99
- module='load_test', upstreams=[register_test_app_module]
115
+ register_load_test_module = create_register_module(
116
+ module_path=f'_automate.{SNAKE_APP_NAME_TPL}.load_test',
117
+ alias=f'{SNAKE_APP_NAME_TPL}_load_test',
118
+ inputs=[app_name_input],
119
+ upstreams=[register_test_module]
100
120
  )
101
121
 
102
- add_project_task = create_add_project_automation_task(
122
+ ensure_project_tasks = create_ensure_project_tasks(
103
123
  upstreams=[copy_resource]
104
124
  )
105
125
 
106
- register_start = create_register_app_task(
107
- task_name='register-start',
108
- project_automation_file_name='start_project.py',
109
- project_automation_task_name='start',
110
- app_automation_file_name='local.py',
111
- app_automation_task_var_name_tpl='start_{snake_app_name}',
112
- upstreams=[add_project_task]
126
+ add_start_upstream = create_add_start_upstream(
127
+ upstream_module=f'_automate.{SNAKE_APP_NAME_TPL}.local',
128
+ upstream_task_var=f'start_{SNAKE_APP_NAME_TPL}',
129
+ upstreams=[ensure_project_tasks],
130
+ inputs=[app_name_input]
113
131
  )
114
132
 
115
- register_start_container = create_register_app_task(
116
- task_name='register-start-container',
117
- project_automation_file_name='start_project_containers.py',
118
- project_automation_task_name='start-containers',
119
- app_automation_file_name='container.py',
120
- app_automation_task_var_name_tpl='start_{snake_app_name}_container',
121
- upstreams=[add_project_task]
133
+ add_start_container_upstream = create_add_start_containers_upstream(
134
+ upstream_module=f'_automate.{SNAKE_APP_NAME_TPL}.container',
135
+ upstream_task_var=f'start_{SNAKE_APP_NAME_TPL}_container',
136
+ upstreams=[ensure_project_tasks],
137
+ inputs=[app_name_input]
122
138
  )
123
139
 
124
- register_stop_container = create_register_app_task(
125
- task_name='register-stop-container',
126
- project_automation_file_name='stop_project_containers.py',
127
- project_automation_task_name='stop-containers',
128
- app_automation_file_name='container.py',
129
- app_automation_task_var_name_tpl='stop_{snake_app_name}_container',
130
- upstreams=[add_project_task]
140
+ add_stop_container_upstream = create_add_stop_containers_upstream(
141
+ upstream_module=f'_automate.{SNAKE_APP_NAME_TPL}.container',
142
+ upstream_task_var=f'stop_{SNAKE_APP_NAME_TPL}_container',
143
+ upstreams=[ensure_project_tasks],
144
+ inputs=[app_name_input]
131
145
  )
132
146
 
133
- register_remove_container = create_register_app_task(
134
- task_name='register-remove-container',
135
- project_automation_file_name='remove_project_containers.py',
136
- project_automation_task_name='remove-containers',
137
- app_automation_file_name='container.py',
138
- app_automation_task_var_name_tpl='remove_{snake_app_name}_container',
139
- upstreams=[add_project_task]
147
+ add_remove_container_upstream = create_add_remove_containers_upstream(
148
+ upstream_module=f'_automate.{SNAKE_APP_NAME_TPL}.container',
149
+ upstream_task_var=f'remove_{SNAKE_APP_NAME_TPL}_container',
150
+ upstreams=[ensure_project_tasks],
151
+ inputs=[app_name_input]
140
152
  )
141
153
 
142
- register_push_image = create_register_app_task(
143
- task_name='register-push-image',
144
- project_automation_file_name='push_project_images.py',
145
- project_automation_task_name='push-images',
146
- app_automation_file_name='image.py',
147
- app_automation_task_var_name_tpl='push_{snake_app_name}_image',
148
- upstreams=[add_project_task]
154
+ add_build_image_upstream = create_add_build_images_upstream(
155
+ upstream_module=f'_automate.{SNAKE_APP_NAME_TPL}.image',
156
+ upstream_task_var=f'build_{SNAKE_APP_NAME_TPL}_image',
157
+ upstreams=[ensure_project_tasks],
158
+ inputs=[app_name_input]
149
159
  )
150
160
 
151
- register_build_image = create_register_app_task(
152
- task_name='register-build-image',
153
- project_automation_file_name='build_project_images.py',
154
- project_automation_task_name='build-images',
155
- app_automation_file_name='image.py',
156
- app_automation_task_var_name_tpl='build_{snake_app_name}_image',
157
- upstreams=[add_project_task]
161
+ add_push_image_upstream = create_add_push_images_upstream(
162
+ upstream_module=f'_automate.{SNAKE_APP_NAME_TPL}.image',
163
+ upstream_task_var=f'push_{SNAKE_APP_NAME_TPL}_image',
164
+ upstreams=[ensure_project_tasks],
165
+ inputs=[app_name_input]
158
166
  )
159
167
 
160
- register_deploy = create_register_app_task(
161
- task_name='register-deploy',
162
- project_automation_file_name='deploy_project.py',
163
- project_automation_task_name='deploy',
164
- app_automation_file_name='deployment.py',
165
- app_automation_task_var_name_tpl='deploy_{snake_app_name}',
166
- upstreams=[add_project_task]
168
+ add_deploy_upstream = create_add_deploy_upstream(
169
+ upstream_module=f'_automate.{SNAKE_APP_NAME_TPL}.deployment',
170
+ upstream_task_var=f'deploy_{SNAKE_APP_NAME_TPL}',
171
+ upstreams=[ensure_project_tasks],
172
+ inputs=[app_name_input]
167
173
  )
168
174
 
169
- register_destroy = create_register_app_task(
170
- task_name='register-destroy',
171
- project_automation_file_name='destroy_project.py',
172
- project_automation_task_name='destroy',
173
- app_automation_file_name='deployment.py',
174
- app_automation_task_var_name_tpl='destroy_{snake_app_name}',
175
- upstreams=[add_project_task]
175
+ add_destroy_upstream = create_add_destroy_upstream(
176
+ upstream_module=f'_automate.{SNAKE_APP_NAME_TPL}.deployment',
177
+ upstream_task_var=f'destroy_{SNAKE_APP_NAME_TPL}',
178
+ upstreams=[ensure_project_tasks],
179
+ inputs=[app_name_input]
176
180
  )
177
181
 
178
182
 
@@ -180,20 +184,20 @@ register_destroy = create_register_app_task(
180
184
  name='fastapp',
181
185
  group=project_add_group,
182
186
  upstreams=[
183
- register_local_app_module,
184
- register_container_app_module,
185
- register_image_app_module,
186
- register_deployment_app_module,
187
- register_test_app_module,
188
- register_load_test_app_module,
189
- register_start,
190
- register_start_container,
191
- register_stop_container,
192
- register_remove_container,
193
- register_build_image,
194
- register_push_image,
195
- register_deploy,
196
- register_destroy
187
+ register_local_module,
188
+ register_container_module,
189
+ register_image_module,
190
+ register_deployment_module,
191
+ register_test_module,
192
+ register_load_test_module,
193
+ add_start_upstream,
194
+ add_start_container_upstream,
195
+ add_stop_container_upstream,
196
+ add_remove_container_upstream,
197
+ add_build_image_upstream,
198
+ add_push_image_upstream,
199
+ add_deploy_upstream,
200
+ add_destroy_upstream
197
201
  ],
198
202
  runner=runner
199
203
  )
@@ -33,7 +33,8 @@ MODULES = jsons.loads(MODULE_JSON_STR)
33
33
  def skip_local_microservices_execution(*args: Any, **kwargs: Any) -> bool:
34
34
  if not kwargs.get('local_snake_zrb_app_name', True):
35
35
  return True
36
- return kwargs.get('snake_zrb_app_name_run_mode', 'monolith') != 'microservices'
36
+ run_mode = kwargs.get('snake_zrb_app_name_run_mode', 'monolith')
37
+ return run_mode != 'microservices'
37
38
 
38
39
 
39
40
  ###############################################################################
@@ -0,0 +1,7 @@
1
+ if [ ! -d .venv ]
2
+ then
3
+ echo "Init virtual environment"
4
+ python -m venv .venv
5
+ fi
6
+ echo "Activate virtual environment"
7
+ source .venv/bin/activate
@@ -1,7 +1,4 @@
1
1
  PYTHONUNBUFFERED=1
2
- echo "Activate virtual environment"
3
- source .venv/bin/activate
4
-
5
2
  echo "Start load test"
6
3
  locust {%if input.snake_zrb_app_name_load_test_headless %}--headless{% endif %} \
7
4
  --web-port {{ input.snake_zrb_app_name_load_test_port }} \
@@ -0,0 +1,2 @@
1
+ echo "Install packages"
2
+ pip install -r requirements.txt
@@ -0,0 +1,3 @@
1
+ echo "Install packages"
2
+ pip install -r requirements.txt
3
+
@@ -0,0 +1,3 @@
1
+ PYTHONUNBUFFERED=1
2
+ echo "Run start.sh"
3
+ ./start.sh
@@ -1,2 +1 @@
1
- (pulumi stack select {{input.snake_zrb_app_name_pulumi_stack}} || pulumi stack init {{input.snake_zrb_app_name_pulumi_stack}})
2
1
  pulumi destroy --skip-preview
@@ -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,2 +1 @@
1
- (pulumi stack select {{input.snake_zrb_app_name_pulumi_stack}} || pulumi stack init {{input.snake_zrb_app_name_pulumi_stack}})
2
1
  pulumi up --skip-preview
@@ -1,7 +1,7 @@
1
1
  from typing import Mapping, Any, List
2
2
  from zrb import DockerComposeTask, Env, ServiceConfig, EnvFile, runner, Task
3
3
  from zrb.helper.util import to_kebab_case
4
- from zrb.builtin._group import project_group
4
+ from zrb.builtin.group import project_group
5
5
  from ._common import (
6
6
  APP_TEMPLATE_ENV_FILE_NAME, RESOURCE_DIR, MODULES, app_container_checker,
7
7
  rabbitmq_checker, rabbitmq_management_checker, redpanda_console_checker,
@@ -1,5 +1,5 @@
1
1
  from zrb import CmdTask, Env, EnvFile, StrInput, ChoiceInput, runner
2
- from zrb.builtin._group import project_group
2
+ from zrb.builtin.group import project_group
3
3
  from .image import push_snake_zrb_app_name_image
4
4
  from ._common import (
5
5
  CURRENT_DIR, DEPLOYMENT_DIR, APP_TEMPLATE_ENV_FILE_NAME,
@@ -106,7 +106,10 @@ deploy_snake_zrb_app_name = CmdTask(
106
106
  deployment_mode_env,
107
107
  deployment_enable_monitoring_env,
108
108
  ],
109
- cmd_path=os.path.join(CURRENT_DIR, 'cmd', 'pulumi-up.sh'),
109
+ cmd_path=[
110
+ os.path.join(CURRENT_DIR, 'cmd', 'pulumi-init-stack.sh'),
111
+ os.path.join(CURRENT_DIR, 'cmd', 'pulumi-destroy.sh'),
112
+ ]
110
113
  )
111
114
  runner.register(deploy_snake_zrb_app_name)
112
115
 
@@ -129,6 +132,9 @@ destroy_snake_zrb_app_name = CmdTask(
129
132
  image_env,
130
133
  deployment_modules_env,
131
134
  ],
132
- cmd_path=os.path.join(CURRENT_DIR, 'cmd', 'pulumi-destroy.sh'),
135
+ cmd_path=[
136
+ os.path.join(CURRENT_DIR, 'cmd', 'pulumi-init-stack.sh'),
137
+ os.path.join(CURRENT_DIR, 'cmd', 'pulumi-destroy.sh'),
138
+ ]
133
139
  )
134
140
  runner.register(destroy_snake_zrb_app_name)
@@ -1,5 +1,5 @@
1
1
  from zrb import CmdTask, Env, EnvFile, PathChecker, runner
2
- from zrb.builtin._group import project_group
2
+ from zrb.builtin.group import project_group
3
3
  from ._common import (
4
4
  APP_FRONTEND_DIR, APP_FRONTEND_BUILD_DIR, CURRENT_DIR,
5
5
  APP_TEMPLATE_ENV_FILE_NAME
@@ -16,7 +16,7 @@ build_snake_zrb_app_name_frontend = CmdTask(
16
16
  description='Build frontend for human readable zrb app name',
17
17
  group=project_group,
18
18
  cwd=APP_FRONTEND_DIR,
19
- cmd_path=os.path.join(CURRENT_DIR, 'cmd', 'build-frontend.sh'),
19
+ cmd_path=os.path.join(CURRENT_DIR, 'cmd', 'app-build-frontend.sh'),
20
20
  checkers=[
21
21
  PathChecker(
22
22
  name='check-kebab-zrb-app-name-frontend-build',
@@ -39,7 +39,7 @@ build_snake_zrb_app_name_frontend_once = CmdTask(
39
39
  name='build-kebab-zrb-app-name-frontend_once',
40
40
  description='Build frontend for human readable zrb app name',
41
41
  cwd=APP_FRONTEND_DIR,
42
- cmd_path=os.path.join(CURRENT_DIR, 'cmd', 'build-frontend.sh'),
42
+ cmd_path=os.path.join(CURRENT_DIR, 'cmd', 'app-build-frontend.sh'),
43
43
  checkers=[
44
44
  PathChecker(
45
45
  name='check-kebab-zrb-app-name-frontend-build',
@@ -1,5 +1,5 @@
1
1
  from zrb import DockerComposeTask, Env, StrInput, runner
2
- from zrb.builtin._group import project_group
2
+ from zrb.builtin.group import project_group
3
3
  from ._common import RESOURCE_DIR, local_input
4
4
 
5
5
  ###############################################################################
@@ -1,5 +1,5 @@
1
1
  from zrb import CmdTask, EnvFile, BoolInput, StrInput, IntInput, runner
2
- from zrb.builtin._group import project_group
2
+ from zrb.builtin.group import project_group
3
3
  from ._common import CURRENT_DIR, RESOURCE_DIR
4
4
  import os
5
5
 
@@ -54,7 +54,8 @@ url_input = StrInput(
54
54
  ###############################################################################
55
55
 
56
56
  load_test_env_file = EnvFile(
57
- env_file=LOAD_TEST_TEMPLATE_ENV_FILE_NAME, prefix='LOAD_TEST_ZRB_ENV_PREFIX'
57
+ env_file=LOAD_TEST_TEMPLATE_ENV_FILE_NAME,
58
+ prefix='LOAD_TEST_ZRB_ENV_PREFIX'
58
59
  )
59
60
 
60
61
  ###############################################################################
@@ -67,7 +68,10 @@ prepare_snake_zrb_app_name_load_test = CmdTask(
67
68
  description='Prepare load test for human readable zrb app name',
68
69
  group=project_group,
69
70
  cwd=LOAD_TEST_DIR,
70
- cmd_path=os.path.join(CURRENT_DIR, 'cmd', 'prepare-load-test.sh'),
71
+ cmd_path=[
72
+ os.path.join(CURRENT_DIR, 'cmd', 'activate-venv.sh'),
73
+ os.path.join(CURRENT_DIR, 'cmd', 'app-prepare-load-test.sh'),
74
+ ]
71
75
  )
72
76
  runner.register(prepare_snake_zrb_app_name_load_test)
73
77
 
@@ -86,6 +90,9 @@ load_test_snake_zrb_app_name_load_test = CmdTask(
86
90
  ],
87
91
  cwd=LOAD_TEST_DIR,
88
92
  env_files=[load_test_env_file],
89
- cmd_path=os.path.join(CURRENT_DIR, 'cmd', 'load-test.sh'),
93
+ cmd_path=[
94
+ os.path.join(CURRENT_DIR, 'cmd', 'activate-venv.sh'),
95
+ os.path.join(CURRENT_DIR, 'cmd', 'app-load-test.sh'),
96
+ ]
90
97
  )
91
98
  runner.register(load_test_snake_zrb_app_name_load_test)
@@ -1,6 +1,6 @@
1
1
  from typing import Any, List
2
2
  from zrb import CmdTask, DockerComposeTask, Task, Env, EnvFile, runner
3
- from zrb.builtin._group import project_group
3
+ from zrb.builtin.group import project_group
4
4
  from ._common import (
5
5
  CURRENT_DIR, APP_DIR, APP_TEMPLATE_ENV_FILE_NAME, RESOURCE_DIR,
6
6
  skip_local_microservices_execution, rabbitmq_checker,
@@ -111,7 +111,10 @@ prepare_snake_zrb_app_name_backend = CmdTask(
111
111
  description='Prepare backend for human readable zrb app name',
112
112
  group=project_group,
113
113
  cwd=APP_DIR,
114
- cmd_path=os.path.join(CURRENT_DIR, 'cmd', 'prepare-backend.sh'),
114
+ cmd_path=[
115
+ os.path.join(CURRENT_DIR, 'cmd', 'activate-venv.sh'),
116
+ os.path.join(CURRENT_DIR, 'cmd', 'app-prepare-backend.sh'),
117
+ ]
115
118
  )
116
119
  runner.register(prepare_snake_zrb_app_name_backend)
117
120
 
@@ -134,7 +137,10 @@ start_monolith_snake_zrb_app_name = CmdTask(
134
137
  cwd=APP_DIR,
135
138
  env_files=[app_env_file],
136
139
  envs=[app_enable_otel_env],
137
- cmd_path=os.path.join(CURRENT_DIR, 'cmd', 'start.sh'),
140
+ cmd_path=[
141
+ os.path.join(CURRENT_DIR, 'cmd', 'activate-venv.sh'),
142
+ os.path.join(CURRENT_DIR, 'cmd', 'app-start.sh'),
143
+ ],
138
144
  checkers=[
139
145
  app_local_checker,
140
146
  ]
@@ -166,7 +172,10 @@ start_snake_zrb_app_name_gateway = CmdTask(
166
172
  Env(name='APP_ENABLE_RPC_SERVER', default='false', os_name=''),
167
173
  app_enable_otel_env,
168
174
  ],
169
- cmd_path=os.path.join(CURRENT_DIR, 'cmd', 'start.sh'),
175
+ cmd_path=[
176
+ os.path.join(CURRENT_DIR, 'cmd', 'activate-venv.sh'),
177
+ os.path.join(CURRENT_DIR, 'cmd', 'app-start.sh'),
178
+ ],
170
179
  checkers=[
171
180
  app_local_checker,
172
181
  ]
@@ -32,7 +32,10 @@ def get_start_microservices(upstreams: List[Task]) -> List[Task]:
32
32
  envs=disable_all_module_envs + _get_service_envs(
33
33
  zrbAppHttpPort, module_index, module_name
34
34
  ),
35
- cmd_path=os.path.join(CURRENT_DIR, 'cmd', 'start.sh'),
35
+ cmd_path=[
36
+ os.path.join(CURRENT_DIR, 'cmd', 'activate-venv.sh'),
37
+ os.path.join(CURRENT_DIR, 'cmd', 'app-start.sh'),
38
+ ],
36
39
  checkers=[
37
40
  HTTPChecker(
38
41
  name=f'check-kebab-zrb-app-name-{kebab_module_name}-service',
@@ -1,8 +1,6 @@
1
1
  from zrb import CmdTask, StrInput, Env, EnvFile, runner, python_task
2
- from zrb.builtin._group import project_group
3
- from ._common import (
4
- CURRENT_DIR, RESOURCE_DIR, APP_TEMPLATE_ENV_FILE_NAME,
5
- )
2
+ from zrb.builtin.group import project_group
3
+ from ._common import CURRENT_DIR, RESOURCE_DIR, APP_TEMPLATE_ENV_FILE_NAME
6
4
  from .frontend import build_snake_zrb_app_name_frontend_once
7
5
  from .local import prepare_snake_zrb_app_name_backend
8
6
  import os
@@ -73,7 +71,7 @@ test_snake_zrb_app_name = CmdTask(
73
71
  default='false'
74
72
  ),
75
73
  ],
76
- cmd_path=os.path.join(CURRENT_DIR, 'cmd', 'test.sh'),
74
+ cmd_path=os.path.join(CURRENT_DIR, 'cmd', 'app-test.sh'),
77
75
  retry=0
78
76
  )
79
77
  runner.register(test_snake_zrb_app_name)
@@ -1,4 +1,4 @@
1
1
  pulumi>=3.0.0,<4.0.0
2
- pulumi-kubernetes>=3.0.0,<4.0.0
3
- python-dotenv==0.21.1
2
+ pulumi-kubernetes>=3.0.0,<4.2.0
3
+ python-dotenv==1.0.0
4
4
  jsons==1.6.3
@@ -1 +1 @@
1
- locust==2.15.1
1
+ locust==2.16.1
@@ -1,9 +1,9 @@
1
1
  SQLAlchemy==2.0.18
2
- aiormq==6.7.6
2
+ aiormq==6.7.7
3
3
  aiokafka==0.8.1
4
- alembic==1.11.1
4
+ alembic==1.11.3
5
5
  bcrypt==4.0.1
6
- fastapi==0.100.0
6
+ fastapi==0.101.1
7
7
  jsons==1.6.3
8
8
  pydantic==1.10.9
9
9
  psycopg2-binary==2.9.6