zrb 0.23.0__py3-none-any.whl → 0.24.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/__init__.py +2 -0
- zrb/builtin/devtool/install/_input.py +2 -2
- 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 +5 -6
- zrb/builtin/project/add/app/python/template/_automate/snake_zrb_app_name/container/start.py +5 -6
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/_helper.py +1 -52
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/microservices/start.py +5 -6
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/monolith/start.py +5 -6
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/support/start.py +4 -6
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/README.md +84 -8
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/loadtest/locustfile.py +1 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/loadtest/template.env +1 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/config.py +59 -61
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend/src/routes/+layout.svelte +1 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend/vite.config.ts +7 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/app/__init__.py +0 -0
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/{app.py → app/app.py} +30 -29
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/{app_lifespan.py → app/app_lifespan.py} +16 -16
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/{app_state.py → app/app_state.py} +2 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/db_connection.py +14 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/frontend_index.py +2 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/log.py +6 -6
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/messagebus.py +33 -33
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/rpc.py +9 -9
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/main.py +1 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/integration/access_token_scheme.py +2 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/integration/access_token_util.py +7 -7
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/integration/model/user_model.py +6 -6
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/integration/refresh_token_util.py +7 -7
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/integration/user.py +18 -18
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/migrate.py +2 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/register_module.py +9 -9
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/migrate.py +2 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/register_module.py +9 -9
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/template.env +5 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_group_crud.py +7 -7
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_permission_crud.py +7 -7
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_user_crud.py +7 -7
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_user_login.py +14 -14
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/test_liveness_and_readiness.py +3 -3
- zrb/builtin/project/add/fastapp/crud/_helper/__init__.py +7 -0
- zrb/builtin/project/add/fastapp/crud/_helper/_common.py +8 -0
- zrb/builtin/project/add/fastapp/crud/_helper/register_api.py +45 -0
- zrb/builtin/project/add/fastapp/crud/_helper/register_permission.py +40 -0
- zrb/builtin/project/add/fastapp/crud/_helper/register_rpc.py +45 -0
- zrb/builtin/project/add/fastapp/crud/crud.py +3 -12
- zrb/builtin/project/add/fastapp/crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/repo.py +12 -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 +1 -0
- zrb/builtin/project/add/fastapp/crud/template/src/kebab-zrb-app-name/test/snake_zrb_module_name/test_snake_zrb_entity_name.py +8 -7
- zrb/builtin/project/add/fastapp/field/_helper/__init__.py +17 -0
- zrb/builtin/project/add/fastapp/field/_helper/_common.py +102 -0
- zrb/builtin/project/add/fastapp/field/_helper/inject_delete_page.py +49 -0
- zrb/builtin/project/add/fastapp/field/_helper/inject_detail_page.py +49 -0
- zrb/builtin/project/add/fastapp/field/_helper/inject_insert_page.py +62 -0
- zrb/builtin/project/add/fastapp/field/_helper/inject_list_page.py +47 -0
- zrb/builtin/project/add/fastapp/field/_helper/inject_repo.py +47 -0
- zrb/builtin/project/add/fastapp/field/_helper/inject_schema.py +45 -0
- zrb/builtin/project/add/fastapp/field/_helper/inject_test.py +49 -0
- zrb/builtin/project/add/fastapp/field/_helper/inject_update_page.py +50 -0
- zrb/builtin/project/add/fastapp/field/_input.py +14 -2
- zrb/builtin/project/add/fastapp/field/field.py +70 -90
- zrb/builtin/project/add/fastapp/module/_helper/__init__.py +17 -0
- zrb/builtin/project/add/fastapp/module/_helper/append_all_disabled_env.py +22 -0
- zrb/builtin/project/add/fastapp/module/_helper/append_all_enabled_env.py +22 -0
- zrb/builtin/project/add/fastapp/module/_helper/append_deployment_template_env.py +25 -0
- zrb/builtin/project/add/fastapp/module/_helper/append_src_template_env.py +25 -0
- zrb/builtin/project/add/fastapp/module/_helper/create_app_config.py +29 -0
- zrb/builtin/project/add/fastapp/module/_helper/create_microservice_config.py +158 -0
- zrb/builtin/project/add/fastapp/module/_helper/register_migration.py +35 -0
- zrb/builtin/project/add/fastapp/module/_helper/register_module.py +33 -0
- zrb/builtin/project/add/fastapp/module/module.py +8 -37
- zrb/builtin/project/add/fastapp/module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/migrate.py +2 -2
- zrb/builtin/project/add/fastapp/module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/register_module.py +9 -9
- zrb/builtin/project/add/plugin/plugin.py +2 -2
- zrb/builtin/project/create/create.py +2 -2
- zrb/builtin/version.py +3 -3
- zrb/config/config.py +14 -14
- zrb/helper/callable.py +3 -1
- zrb/helper/cli.py +4 -4
- zrb/helper/file/copy_tree.py +26 -10
- zrb/helper/log.py +3 -3
- zrb/helper/string/parse_replacement.py +1 -1
- zrb/helper/typecheck.py +2 -2
- zrb/helper/typing.py +2 -2
- zrb/helper/util.py +12 -0
- zrb/runner.py +2 -2
- zrb/task/base_remote_cmd_task.py +5 -1
- zrb/task/base_task/base_task.py +3 -3
- zrb/task/base_task/component/base_task_model.py +9 -9
- zrb/task/cmd_task.py +15 -7
- zrb/task/docker_compose_start_task.py +151 -0
- zrb/task/docker_compose_task.py +35 -16
- zrb/task_input/base_input.py +2 -2
- zrb/task_input/multiline_input.py +2 -2
- {zrb-0.23.0.dist-info → zrb-0.24.0.dist-info}/METADATA +3 -3
- {zrb-0.23.0.dist-info → zrb-0.24.0.dist-info}/RECORD +98 -80
- 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/init.py +0 -34
- zrb/builtin/project/add/app/python/template/_automate/snake_zrb_app_name/container/init.py +0 -34
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/microservices/init.py +0 -36
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/monolith/init.py +0 -36
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/support/init.py +0 -26
- zrb/builtin/project/add/fastapp/crud/_helper.py +0 -118
- zrb/builtin/project/add/fastapp/field/_helper.py +0 -342
- zrb/builtin/project/add/fastapp/module/_helper.py +0 -313
- {zrb-0.23.0.dist-info → zrb-0.24.0.dist-info}/LICENSE +0 -0
- {zrb-0.23.0.dist-info → zrb-0.24.0.dist-info}/WHEEL +0 -0
- {zrb-0.23.0.dist-info → zrb-0.24.0.dist-info}/entry_points.txt +0 -0
@@ -1,313 +0,0 @@
|
|
1
|
-
import asyncio
|
2
|
-
import os
|
3
|
-
|
4
|
-
import jsons
|
5
|
-
from dotenv import dotenv_values
|
6
|
-
|
7
|
-
from zrb.helper.codemod.add_function_call import add_function_call
|
8
|
-
from zrb.helper.codemod.add_import_module import add_import_module
|
9
|
-
from zrb.helper.codemod.append_code_to_function import append_code_to_function
|
10
|
-
from zrb.helper.docker_compose.file import add_services
|
11
|
-
from zrb.helper.file.text import (
|
12
|
-
append_text_file_async,
|
13
|
-
read_text_file_async,
|
14
|
-
write_text_file_async,
|
15
|
-
)
|
16
|
-
from zrb.helper.typecheck import typechecked
|
17
|
-
from zrb.helper.typing import Any, List, Mapping
|
18
|
-
from zrb.task.task import Task
|
19
|
-
|
20
|
-
|
21
|
-
@typechecked
|
22
|
-
async def create_microservice_config(
|
23
|
-
task: Task,
|
24
|
-
project_dir: str,
|
25
|
-
kebab_app_name: str,
|
26
|
-
snake_app_name: str,
|
27
|
-
kebab_module_name: str,
|
28
|
-
snake_module_name: str,
|
29
|
-
upper_snake_module_name: str,
|
30
|
-
):
|
31
|
-
modules = await _create_automation_json_config(
|
32
|
-
task, project_dir, snake_app_name, snake_module_name
|
33
|
-
)
|
34
|
-
return await asyncio.gather(
|
35
|
-
asyncio.create_task(
|
36
|
-
_add_docker_compose_service(
|
37
|
-
task,
|
38
|
-
modules,
|
39
|
-
project_dir,
|
40
|
-
kebab_app_name,
|
41
|
-
snake_app_name,
|
42
|
-
kebab_module_name,
|
43
|
-
snake_module_name,
|
44
|
-
upper_snake_module_name,
|
45
|
-
)
|
46
|
-
),
|
47
|
-
asyncio.create_task(
|
48
|
-
_append_compose_env(
|
49
|
-
task, modules, project_dir, kebab_app_name, upper_snake_module_name
|
50
|
-
)
|
51
|
-
),
|
52
|
-
)
|
53
|
-
|
54
|
-
|
55
|
-
@typechecked
|
56
|
-
async def _add_docker_compose_service(
|
57
|
-
task: Task,
|
58
|
-
modules: List[str],
|
59
|
-
project_dir: str,
|
60
|
-
kebab_app_name: str,
|
61
|
-
snake_app_name: str,
|
62
|
-
kebab_module_name: str,
|
63
|
-
snake_module_name: str,
|
64
|
-
upper_snake_module_name: str,
|
65
|
-
):
|
66
|
-
module_app_port = 8080 + len(modules)
|
67
|
-
module_app_port_str = str(module_app_port)
|
68
|
-
docker_compose_file_path = os.path.join(
|
69
|
-
project_dir, "src", kebab_app_name, "docker-compose.yml"
|
70
|
-
)
|
71
|
-
app_container_port_env_name = f"APP_{upper_snake_module_name}_MODULE_PORT"
|
72
|
-
app_container_port_env = (
|
73
|
-
"${" + app_container_port_env_name + ":-" + module_app_port_str + "}"
|
74
|
-
) # noqa
|
75
|
-
app_host_port_env_name = f"APP_{upper_snake_module_name}_HOST_MODULE_PORT"
|
76
|
-
app_host_port_env = (
|
77
|
-
"${" + app_host_port_env_name + ":-" + module_app_port_str + "}"
|
78
|
-
) # noqa
|
79
|
-
service_definition = _get_new_docker_compose_service_definition(
|
80
|
-
kebab_app_name,
|
81
|
-
snake_app_name,
|
82
|
-
kebab_module_name,
|
83
|
-
snake_module_name,
|
84
|
-
upper_snake_module_name,
|
85
|
-
app_host_port_env,
|
86
|
-
app_container_port_env,
|
87
|
-
)
|
88
|
-
task.print_out(f"Add service at: {docker_compose_file_path}")
|
89
|
-
add_services(
|
90
|
-
file_name=docker_compose_file_path,
|
91
|
-
new_services=service_definition,
|
92
|
-
)
|
93
|
-
|
94
|
-
|
95
|
-
@typechecked
|
96
|
-
def _get_new_docker_compose_service_definition(
|
97
|
-
kebab_app_name: str,
|
98
|
-
snake_app_name: str,
|
99
|
-
kebab_module_name: str,
|
100
|
-
snake_module_name: str,
|
101
|
-
upper_snake_module_name: str,
|
102
|
-
app_host_port_env: str,
|
103
|
-
app_container_port_env: str,
|
104
|
-
) -> Mapping[str, Any]:
|
105
|
-
return {
|
106
|
-
f"{kebab_app_name}-{kebab_module_name}-service": {
|
107
|
-
"build": {"dockerfile": "Dockerfile", "context": "./src"},
|
108
|
-
"image": "${IMAGE:-" + kebab_app_name + "}",
|
109
|
-
"container_name": "${CONTAINER_PREFIX:-my}-"
|
110
|
-
+ f"{kebab_app_name}-{kebab_module_name}-service", # noqa
|
111
|
-
"hostname": f"{kebab_app_name}-{kebab_module_name}-service",
|
112
|
-
"env_file": ["src/template.env", "all-module-disabled.env"],
|
113
|
-
"environment": {
|
114
|
-
"APP_NAME": "${APP_NAME:-"
|
115
|
-
+ kebab_app_name
|
116
|
-
+ "}-"
|
117
|
-
+ f"{kebab_module_name}-service", # noqa
|
118
|
-
"APP_ENABLE_OTEL": "${APP_ENABLE_OTEL:-0}",
|
119
|
-
"APP_PORT": app_container_port_env,
|
120
|
-
"APP_ENABLE_EVENT_HANDLER": "true",
|
121
|
-
"APP_ENABLE_RPC_SERVER": "true",
|
122
|
-
"APP_ENABLE_API": "false",
|
123
|
-
"APP_ENABLE_FRONTEND": "false",
|
124
|
-
f"APP_ENABLE_{upper_snake_module_name}_MODULE": "true",
|
125
|
-
},
|
126
|
-
"ports": [f"{app_host_port_env}:{app_container_port_env}"],
|
127
|
-
"restart": "unless-stopped",
|
128
|
-
"profiles": ["microservices"],
|
129
|
-
"healthcheck": {
|
130
|
-
"test": f"curl --fail http://localhost:{app_container_port_env}/readiness || killall uvicorn", # noqa
|
131
|
-
"interval": "20s",
|
132
|
-
"timeout": "3s",
|
133
|
-
"retries": 10,
|
134
|
-
"start_period": "20s",
|
135
|
-
},
|
136
|
-
"networks": ["zrb"],
|
137
|
-
}
|
138
|
-
}
|
139
|
-
|
140
|
-
|
141
|
-
@typechecked
|
142
|
-
async def _append_compose_env(
|
143
|
-
task: Task,
|
144
|
-
modules: List[str],
|
145
|
-
project_dir: str,
|
146
|
-
kebab_app_name: str,
|
147
|
-
upper_snake_module_name: str,
|
148
|
-
):
|
149
|
-
compose_template_env_path = os.path.join(
|
150
|
-
project_dir, "src", kebab_app_name, "docker-compose.env"
|
151
|
-
)
|
152
|
-
compose_env_map = dotenv_values(compose_template_env_path)
|
153
|
-
host_port = int(compose_env_map.get("APP_GATEWAY_HOST_PORT", "8080"))
|
154
|
-
module_app_port = host_port + len(modules)
|
155
|
-
new_env_str = "\n".join(
|
156
|
-
[
|
157
|
-
f"APP_{upper_snake_module_name}_HOST_MODULE_PORT={module_app_port}",
|
158
|
-
f"APP_{upper_snake_module_name}_MODULE_PORT={module_app_port}",
|
159
|
-
]
|
160
|
-
)
|
161
|
-
task.print_out(f"Add new environment to: {compose_template_env_path}")
|
162
|
-
await append_text_file_async(compose_template_env_path, new_env_str)
|
163
|
-
|
164
|
-
|
165
|
-
@typechecked
|
166
|
-
async def append_src_template_env(
|
167
|
-
task: Task, project_dir: str, kebab_app_name: str, upper_snake_module_name: str
|
168
|
-
):
|
169
|
-
src_template_env_path = os.path.join(
|
170
|
-
project_dir, "src", kebab_app_name, "src", "template.env"
|
171
|
-
)
|
172
|
-
new_env_str = "\n".join(
|
173
|
-
[
|
174
|
-
f"APP_ENABLE_{upper_snake_module_name}_MODULE=true",
|
175
|
-
]
|
176
|
-
)
|
177
|
-
task.print_out(f"Add new environment to: {src_template_env_path}")
|
178
|
-
await append_text_file_async(src_template_env_path, new_env_str)
|
179
|
-
|
180
|
-
|
181
|
-
@typechecked
|
182
|
-
async def append_deployment_template_env(
|
183
|
-
task: Task, project_dir: str, kebab_app_name: str, upper_snake_module_name: str
|
184
|
-
):
|
185
|
-
deployment_template_env_path = os.path.join(
|
186
|
-
project_dir, "src", kebab_app_name, "deployment", "template.env"
|
187
|
-
)
|
188
|
-
new_env_str = "\n".join(
|
189
|
-
[
|
190
|
-
f"REPLICA_{upper_snake_module_name}_SERVICE=1",
|
191
|
-
]
|
192
|
-
)
|
193
|
-
task.print_out(f"Add new environment to: {deployment_template_env_path}")
|
194
|
-
await append_text_file_async(deployment_template_env_path, new_env_str)
|
195
|
-
|
196
|
-
|
197
|
-
@typechecked
|
198
|
-
async def append_all_enabled_env(
|
199
|
-
task: Task, project_dir: str, kebab_app_name: str, upper_snake_module_name: str
|
200
|
-
):
|
201
|
-
all_enabled_env_path = os.path.join(
|
202
|
-
project_dir, "src", kebab_app_name, "all-module-enabled.env"
|
203
|
-
)
|
204
|
-
task.print_out(f"Add new environment to: {all_enabled_env_path}")
|
205
|
-
await append_text_file_async(
|
206
|
-
all_enabled_env_path, f"APP_ENABLE_{upper_snake_module_name}_MODULE=true"
|
207
|
-
)
|
208
|
-
|
209
|
-
|
210
|
-
@typechecked
|
211
|
-
async def append_all_disabled_env(
|
212
|
-
task: Task, project_dir: str, kebab_app_name: str, upper_snake_module_name: str
|
213
|
-
):
|
214
|
-
all_disabled_env_path = os.path.join(
|
215
|
-
project_dir, "src", kebab_app_name, "all-module-disabled.env"
|
216
|
-
)
|
217
|
-
task.print_out(f"Add new environment to: {all_disabled_env_path}")
|
218
|
-
await append_text_file_async(
|
219
|
-
all_disabled_env_path, f"APP_ENABLE_{upper_snake_module_name}_MODULE=false"
|
220
|
-
)
|
221
|
-
|
222
|
-
|
223
|
-
@typechecked
|
224
|
-
async def create_app_config(
|
225
|
-
task: Task,
|
226
|
-
project_dir: str,
|
227
|
-
kebab_app_name: str,
|
228
|
-
snake_module_name: str,
|
229
|
-
upper_snake_module_name: str,
|
230
|
-
):
|
231
|
-
config_file_path = os.path.join(
|
232
|
-
project_dir, "src", kebab_app_name, "src", "config.py"
|
233
|
-
)
|
234
|
-
config_code = "\n".join(
|
235
|
-
[
|
236
|
-
f"app_enable_{snake_module_name}_module = str_to_boolean(os.environ.get(", # noqa
|
237
|
-
f" 'APP_ENABLE_{upper_snake_module_name}_MODULE', 'true'" "))",
|
238
|
-
]
|
239
|
-
)
|
240
|
-
task.print_out(f"Read config from: {config_file_path}")
|
241
|
-
code = await read_text_file_async(config_file_path)
|
242
|
-
code += "\n" + config_code
|
243
|
-
task.print_out(f"Write config to: {config_file_path}")
|
244
|
-
await write_text_file_async(config_file_path, code)
|
245
|
-
|
246
|
-
|
247
|
-
@typechecked
|
248
|
-
async def _create_automation_json_config(
|
249
|
-
task: Task,
|
250
|
-
project_dir: str,
|
251
|
-
snake_app_name: str,
|
252
|
-
snake_module_name: str,
|
253
|
-
):
|
254
|
-
json_modules_file_path = os.path.join(
|
255
|
-
project_dir, "_automate", snake_app_name, "config", "modules.json"
|
256
|
-
)
|
257
|
-
task.print_out(f"Read json config from: {json_modules_file_path}")
|
258
|
-
json_str = await read_text_file_async(json_modules_file_path)
|
259
|
-
task.print_out(f'Add "{snake_module_name}" to json config')
|
260
|
-
modules: List[str] = jsons.loads(json_str)
|
261
|
-
modules.append(snake_module_name)
|
262
|
-
json_str = jsons.dumps(modules)
|
263
|
-
task.print_out(f"Write new json config to: {json_modules_file_path}")
|
264
|
-
await write_text_file_async(json_modules_file_path, json_str)
|
265
|
-
return modules
|
266
|
-
|
267
|
-
|
268
|
-
@typechecked
|
269
|
-
async def register_migration(
|
270
|
-
task: Task, project_dir: str, kebab_app_name: str, snake_module_name: str
|
271
|
-
):
|
272
|
-
app_migration_file_path = os.path.join(
|
273
|
-
project_dir, "src", kebab_app_name, "src", "migrate.py"
|
274
|
-
)
|
275
|
-
import_module_path = ".".join(["module", snake_module_name, "migrate"])
|
276
|
-
function_name = f"migrate_{snake_module_name}"
|
277
|
-
task.print_out(f"Read code from: {app_migration_file_path}")
|
278
|
-
code = await read_text_file_async(app_migration_file_path)
|
279
|
-
task.print_out(
|
280
|
-
f'Add import "{function_name}" from "{import_module_path}" to the code'
|
281
|
-
)
|
282
|
-
code = add_import_module(
|
283
|
-
code=code, module_path=import_module_path, resource=function_name
|
284
|
-
)
|
285
|
-
task.print_out(f'Add "{function_name}" call to the code')
|
286
|
-
code = append_code_to_function(
|
287
|
-
code=code, function_name="migrate", new_code=f"await {function_name}()"
|
288
|
-
)
|
289
|
-
task.print_out(f"Write modified code to: {app_migration_file_path}")
|
290
|
-
await write_text_file_async(app_migration_file_path, code)
|
291
|
-
|
292
|
-
|
293
|
-
@typechecked
|
294
|
-
async def register_module(
|
295
|
-
task: Task, project_dir: str, kebab_app_name: str, snake_module_name: str
|
296
|
-
):
|
297
|
-
app_main_file_path = os.path.join(
|
298
|
-
project_dir, "src", kebab_app_name, "src", "main.py"
|
299
|
-
)
|
300
|
-
import_module_path = ".".join(["module", snake_module_name, "register_module"])
|
301
|
-
function_name = f"register_{snake_module_name}"
|
302
|
-
task.print_out(f"Read code from: {app_main_file_path}")
|
303
|
-
code = await read_text_file_async(app_main_file_path)
|
304
|
-
task.print_out(
|
305
|
-
f'Add import "{function_name}" from "{import_module_path}" to the code'
|
306
|
-
)
|
307
|
-
code = add_import_module(
|
308
|
-
code=code, module_path=import_module_path, resource=function_name
|
309
|
-
)
|
310
|
-
task.print_out(f'Add "{function_name}" call to the code')
|
311
|
-
code = add_function_call(code=code, function_name=function_name, parameters=[])
|
312
|
-
task.print_out(f"Write modified code to: {app_main_file_path}")
|
313
|
-
await write_text_file_async(app_main_file_path, code)
|
File without changes
|
File without changes
|
File without changes
|