zrb 0.0.99__py3-none-any.whl → 0.0.101__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 +1 -2
- zrb/builtin/devtool/devtool_install.py +57 -66
- zrb/builtin/generator/app_generator/add.py +5 -9
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/docker-compose.yml +1 -0
- zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/docker-compose.yml +1 -0
- zrb/builtin/generator/docker_compose_task/template/src/kebab-zrb-task-name/docker-compose.yml +1 -0
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/docker-compose.yml +1 -0
- zrb/builtin/generator/project/template/.python-version +1 -0
- zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/docker-compose.yml +1 -0
- zrb/helper/git/detect_changes.py +1 -1
- zrb/helper/log.py +1 -1
- zrb/helper/python_task.py +0 -1
- zrb/shell-scripts/_common-util.sh +0 -2
- zrb/shell-scripts/ensure-docker-is-installed.sh +2 -1
- zrb/shell-scripts/ensure-rsync-is-installed.sh +1 -0
- zrb/shell-scripts/ensure-ssh-is-installed.sh +1 -0
- zrb/shell-scripts/rsync-util.sh +1 -0
- zrb/shell-scripts/ssh-util.sh +4 -3
- zrb/task/base_remote_cmd_task.py +11 -5
- zrb/task/base_task.py +12 -10
- zrb/task/base_task_composite.py +2 -0
- zrb/task/cmd_task.py +17 -2
- zrb/task/docker_compose_task.py +1 -1
- zrb/task/flow_task.py +37 -113
- zrb/task/remote_cmd_task.py +11 -4
- zrb/task/rsync_task.py +3 -0
- zrb/task_input/any_input.py +4 -0
- zrb/task_input/base_input.py +3 -0
- zrb/task_input/password_input.py +3 -0
- {zrb-0.0.99.dist-info → zrb-0.0.101.dist-info}/METADATA +1 -1
- {zrb-0.0.99.dist-info → zrb-0.0.101.dist-info}/RECORD +35 -34
- /zrb/helper/string/{double_quote.py → modification.py} +0 -0
- {zrb-0.0.99.dist-info → zrb-0.0.101.dist-info}/LICENSE +0 -0
- {zrb-0.0.99.dist-info → zrb-0.0.101.dist-info}/WHEEL +0 -0
- {zrb-0.0.99.dist-info → zrb-0.0.101.dist-info}/entry_points.txt +0 -0
zrb/__init__.py
CHANGED
@@ -13,7 +13,7 @@ from zrb.task.path_checker import PathChecker
|
|
13
13
|
from zrb.task.resource_maker import (
|
14
14
|
ResourceMaker, Replacement, ReplacementMutator
|
15
15
|
)
|
16
|
-
from zrb.task.flow_task import FlowTask
|
16
|
+
from zrb.task.flow_task import FlowTask
|
17
17
|
from zrb.task_input.any_input import AnyInput
|
18
18
|
from zrb.task_input.task_input import Input
|
19
19
|
from zrb.task_input.bool_input import BoolInput
|
@@ -43,7 +43,6 @@ assert PortChecker
|
|
43
43
|
assert PathChecker
|
44
44
|
assert ResourceMaker
|
45
45
|
assert FlowTask
|
46
|
-
assert FlowNode
|
47
46
|
assert Replacement
|
48
47
|
assert ReplacementMutator
|
49
48
|
assert AnyInput
|
@@ -2,7 +2,8 @@ from zrb.helper.typing import Any, Callable
|
|
2
2
|
from zrb.helper.typecheck import typechecked
|
3
3
|
from zrb.config.config import get_current_shell
|
4
4
|
from zrb.task.task import Task
|
5
|
-
from zrb.task.
|
5
|
+
from zrb.task.cmd_task import CmdTask
|
6
|
+
from zrb.task.flow_task import FlowTask
|
6
7
|
from zrb.task_input.str_input import StrInput
|
7
8
|
from zrb.task_input.bool_input import BoolInput
|
8
9
|
from zrb.runner import runner
|
@@ -72,23 +73,22 @@ install_gvm = FlowTask(
|
|
72
73
|
),
|
73
74
|
terminal_config_file_input,
|
74
75
|
],
|
75
|
-
|
76
|
-
|
76
|
+
steps=[
|
77
|
+
CmdTask(
|
77
78
|
name='download-gvm',
|
78
79
|
cmd_path=os.path.join(dir_path, 'gvm', 'download.sh'),
|
79
80
|
preexec_fn=None
|
80
81
|
),
|
81
|
-
|
82
|
+
Task(
|
82
83
|
name='configure-gvm',
|
83
84
|
run=write_config(
|
84
85
|
template_file=os.path.join(
|
85
86
|
dir_path, 'gvm', 'resource', 'config.sh'
|
86
87
|
),
|
87
88
|
config_file='{{input.config_file}}'
|
88
|
-
)
|
89
|
-
preexec_fn=None
|
89
|
+
)
|
90
90
|
),
|
91
|
-
|
91
|
+
CmdTask(
|
92
92
|
name='finalize-gvm-installation',
|
93
93
|
cmd_path=os.path.join(dir_path, 'gvm', 'finalize.sh'),
|
94
94
|
preexec_fn=None
|
@@ -110,23 +110,22 @@ install_pyenv = FlowTask(
|
|
110
110
|
),
|
111
111
|
terminal_config_file_input,
|
112
112
|
],
|
113
|
-
|
114
|
-
|
113
|
+
steps=[
|
114
|
+
CmdTask(
|
115
115
|
name='download-pyenv',
|
116
116
|
cmd_path=os.path.join(dir_path, 'pyenv', 'download.sh'),
|
117
117
|
preexec_fn=None
|
118
118
|
),
|
119
|
-
|
119
|
+
Task(
|
120
120
|
name='configure-pyenv',
|
121
121
|
run=write_config(
|
122
122
|
template_file=os.path.join(
|
123
123
|
dir_path, 'pyenv', 'resource', 'config.sh'
|
124
124
|
),
|
125
125
|
config_file='{{input.config_file}}'
|
126
|
-
)
|
127
|
-
preexec_fn=None
|
126
|
+
)
|
128
127
|
),
|
129
|
-
|
128
|
+
CmdTask(
|
130
129
|
name='finalize-pyenv-installation',
|
131
130
|
cmd_path=os.path.join(dir_path, 'pyenv', 'finalize.sh'),
|
132
131
|
preexec_fn=None
|
@@ -148,23 +147,22 @@ install_nvm = FlowTask(
|
|
148
147
|
),
|
149
148
|
terminal_config_file_input,
|
150
149
|
],
|
151
|
-
|
152
|
-
|
150
|
+
steps=[
|
151
|
+
CmdTask(
|
153
152
|
name='download-nvm',
|
154
153
|
cmd_path=os.path.join(dir_path, 'nvm', 'download.sh'),
|
155
154
|
preexec_fn=None
|
156
155
|
),
|
157
|
-
|
156
|
+
Task(
|
158
157
|
name='configure-nvm',
|
159
158
|
run=write_config(
|
160
159
|
template_file=os.path.join(
|
161
160
|
dir_path, 'nvm', 'resource', 'config.sh'
|
162
161
|
),
|
163
162
|
config_file='{{input.config_file}}'
|
164
|
-
)
|
165
|
-
preexec_fn=None
|
163
|
+
)
|
166
164
|
),
|
167
|
-
|
165
|
+
CmdTask(
|
168
166
|
name='finalize-nvm-installation',
|
169
167
|
cmd_path=os.path.join(dir_path, 'nvm', 'finalize.sh'),
|
170
168
|
preexec_fn=None
|
@@ -193,23 +191,22 @@ install_sdkman = FlowTask(
|
|
193
191
|
),
|
194
192
|
terminal_config_file_input,
|
195
193
|
],
|
196
|
-
|
197
|
-
|
194
|
+
steps=[
|
195
|
+
CmdTask(
|
198
196
|
name='download-sdkman',
|
199
197
|
cmd_path=os.path.join(dir_path, 'sdkman', 'download.sh'),
|
200
198
|
preexec_fn=None
|
201
199
|
),
|
202
|
-
|
200
|
+
Task(
|
203
201
|
name='configure-sdkman',
|
204
202
|
run=write_config(
|
205
203
|
template_file=os.path.join(
|
206
204
|
dir_path, 'sdkman', 'resource', 'config.sh'
|
207
205
|
),
|
208
206
|
config_file='{{input.config_file}}'
|
209
|
-
)
|
210
|
-
preexec_fn=None
|
207
|
+
)
|
211
208
|
),
|
212
|
-
|
209
|
+
CmdTask(
|
213
210
|
name='finalize-sdkman-installation',
|
214
211
|
cmd_path=os.path.join(dir_path, 'sdkman', 'finalize.sh'),
|
215
212
|
preexec_fn=None
|
@@ -224,21 +221,20 @@ install_pulumi = FlowTask(
|
|
224
221
|
group=dev_tool_install_group,
|
225
222
|
description='Universal infrastructure as code',
|
226
223
|
inputs=[terminal_config_file_input],
|
227
|
-
|
228
|
-
|
224
|
+
steps=[
|
225
|
+
CmdTask(
|
229
226
|
name='install-pulumi',
|
230
227
|
cmd_path=os.path.join(dir_path, 'pulumi', 'install.sh'),
|
231
228
|
preexec_fn=None
|
232
229
|
),
|
233
|
-
|
230
|
+
Task(
|
234
231
|
name='configure-pulumi',
|
235
232
|
run=write_config(
|
236
233
|
template_file=os.path.join(
|
237
234
|
dir_path, 'pulumi', 'resource', 'config.sh'
|
238
235
|
),
|
239
236
|
config_file='{{input.config_file}}'
|
240
|
-
)
|
241
|
-
preexec_fn=None
|
237
|
+
)
|
242
238
|
),
|
243
239
|
],
|
244
240
|
retry=0
|
@@ -249,8 +245,8 @@ install_aws = FlowTask(
|
|
249
245
|
name='aws',
|
250
246
|
group=dev_tool_install_group,
|
251
247
|
description='AWS CLI',
|
252
|
-
|
253
|
-
|
248
|
+
steps=[
|
249
|
+
CmdTask(
|
254
250
|
name='install-aws',
|
255
251
|
cmd_path=os.path.join(dir_path, 'aws', 'install.sh'),
|
256
252
|
preexec_fn=None
|
@@ -264,8 +260,8 @@ install_gcloud = FlowTask(
|
|
264
260
|
name='gcloud',
|
265
261
|
group=dev_tool_install_group,
|
266
262
|
description='Gcloud CLI',
|
267
|
-
|
268
|
-
|
263
|
+
steps=[
|
264
|
+
CmdTask(
|
269
265
|
name='install-gcloud',
|
270
266
|
cmd_path=os.path.join(dir_path, 'gcloud', 'install.sh'),
|
271
267
|
preexec_fn=None
|
@@ -287,21 +283,20 @@ install_tmux = FlowTask(
|
|
287
283
|
default='~/.tmux.conf'
|
288
284
|
)
|
289
285
|
],
|
290
|
-
|
291
|
-
|
286
|
+
steps=[
|
287
|
+
CmdTask(
|
292
288
|
name='install-tmux',
|
293
289
|
cmd_path=os.path.join(dir_path, 'tmux', 'install.sh'),
|
294
290
|
preexec_fn=None
|
295
291
|
),
|
296
|
-
|
292
|
+
Task(
|
297
293
|
name='configure-tmux',
|
298
294
|
run=write_config(
|
299
295
|
template_file=os.path.join(
|
300
296
|
dir_path, 'tmux', 'resource', 'config.sh'
|
301
297
|
),
|
302
298
|
config_file='{{input.config_file}}'
|
303
|
-
)
|
304
|
-
preexec_fn=None
|
299
|
+
)
|
305
300
|
),
|
306
301
|
],
|
307
302
|
retry=0
|
@@ -320,21 +315,20 @@ install_zsh = FlowTask(
|
|
320
315
|
default='~/.zshrc'
|
321
316
|
)
|
322
317
|
],
|
323
|
-
|
324
|
-
|
318
|
+
steps=[
|
319
|
+
CmdTask(
|
325
320
|
name='install-zsh',
|
326
321
|
cmd_path=os.path.join(dir_path, 'zsh', 'install.sh'),
|
327
322
|
preexec_fn=None
|
328
323
|
),
|
329
|
-
|
324
|
+
Task(
|
330
325
|
name='configure-zsh',
|
331
326
|
run=write_config(
|
332
327
|
template_file=os.path.join(
|
333
328
|
dir_path, 'zsh', 'resource', 'config.sh'
|
334
329
|
),
|
335
330
|
config_file='{{input.config_file}}'
|
336
|
-
)
|
337
|
-
preexec_fn=None
|
331
|
+
)
|
338
332
|
),
|
339
333
|
],
|
340
334
|
retry=0
|
@@ -345,8 +339,8 @@ install_kubectl = FlowTask(
|
|
345
339
|
name='kubectl',
|
346
340
|
group=dev_tool_install_group,
|
347
341
|
description='Kubernetes CLI tool',
|
348
|
-
|
349
|
-
|
342
|
+
steps=[
|
343
|
+
CmdTask(
|
350
344
|
name='install-kubectl',
|
351
345
|
cmd_path=os.path.join(dir_path, 'kubectl', 'install.sh'),
|
352
346
|
preexec_fn=None
|
@@ -360,8 +354,8 @@ install_helm = FlowTask(
|
|
360
354
|
name='helm',
|
361
355
|
group=dev_tool_install_group,
|
362
356
|
description='Package manager for kubernetes',
|
363
|
-
|
364
|
-
|
357
|
+
steps=[
|
358
|
+
CmdTask(
|
365
359
|
name='install-helm',
|
366
360
|
cmd_path=os.path.join(dir_path, 'helm', 'install.sh'),
|
367
361
|
preexec_fn=None
|
@@ -375,8 +369,8 @@ install_docker = FlowTask(
|
|
375
369
|
name='docker',
|
376
370
|
group=dev_tool_install_group,
|
377
371
|
description='Most popular containerization platform',
|
378
|
-
|
379
|
-
|
372
|
+
steps=[
|
373
|
+
CmdTask(
|
380
374
|
name='install-docker',
|
381
375
|
cmd_path=os.path.join(dir_path, 'docker', 'install.sh'),
|
382
376
|
preexec_fn=None
|
@@ -393,21 +387,20 @@ install_terraform = FlowTask(
|
|
393
387
|
inputs=[
|
394
388
|
terminal_config_file_input
|
395
389
|
],
|
396
|
-
|
397
|
-
|
390
|
+
steps=[
|
391
|
+
CmdTask(
|
398
392
|
name='install-terraform',
|
399
393
|
cmd_path=os.path.join(dir_path, 'terraform', 'install.sh'),
|
400
394
|
preexec_fn=None
|
401
395
|
),
|
402
|
-
|
396
|
+
Task(
|
403
397
|
name='configure-terraform',
|
404
398
|
run=write_config(
|
405
399
|
template_file=os.path.join(
|
406
400
|
dir_path, 'terraform', 'resource', 'config.sh'
|
407
401
|
),
|
408
402
|
config_file='{{input.config_file}}'
|
409
|
-
)
|
410
|
-
preexec_fn=None
|
403
|
+
)
|
411
404
|
),
|
412
405
|
],
|
413
406
|
retry=0
|
@@ -418,14 +411,14 @@ install_helix = FlowTask(
|
|
418
411
|
name='helix',
|
419
412
|
group=dev_tool_install_group,
|
420
413
|
description='Post modern text editor',
|
421
|
-
|
422
|
-
|
414
|
+
steps=[
|
415
|
+
CmdTask(
|
423
416
|
name='install-helix',
|
424
417
|
cmd_path=os.path.join(dir_path, 'helix', 'install.sh'),
|
425
418
|
preexec_fn=None
|
426
419
|
),
|
427
420
|
[
|
428
|
-
|
421
|
+
Task(
|
429
422
|
name='create-helix-theme',
|
430
423
|
run=write_config(
|
431
424
|
template_file=os.path.join(
|
@@ -433,10 +426,9 @@ install_helix = FlowTask(
|
|
433
426
|
),
|
434
427
|
config_file='~/.config/helix/themes/gruvbox_transparent.toml', # noqa
|
435
428
|
remove_old_config=True
|
436
|
-
)
|
437
|
-
preexec_fn=None
|
429
|
+
)
|
438
430
|
),
|
439
|
-
|
431
|
+
Task(
|
440
432
|
name='configure-helix',
|
441
433
|
run=write_config(
|
442
434
|
template_file=os.path.join(
|
@@ -444,10 +436,9 @@ install_helix = FlowTask(
|
|
444
436
|
),
|
445
437
|
config_file='~/.config/helix/config.toml',
|
446
438
|
remove_old_config=True
|
447
|
-
)
|
448
|
-
preexec_fn=None
|
439
|
+
)
|
449
440
|
),
|
450
|
-
|
441
|
+
CmdTask(
|
451
442
|
name='install-language-server',
|
452
443
|
cmd_path=os.path.join(
|
453
444
|
dir_path, 'helix', 'install-language-server.sh'
|
@@ -464,8 +455,8 @@ install_selenium = FlowTask(
|
|
464
455
|
name='selenium',
|
465
456
|
group=dev_tool_install_group,
|
466
457
|
description='Selenium + Chrome web driver',
|
467
|
-
|
468
|
-
|
458
|
+
steps=[
|
459
|
+
CmdTask(
|
469
460
|
name='install-selenium',
|
470
461
|
cmd_path=os.path.join(dir_path, 'selenium', 'install.sh'),
|
471
462
|
preexec_fn=None
|
@@ -50,32 +50,28 @@ default_app_port_input = IntInput(
|
|
50
50
|
build_custom_image_input = BoolInput(
|
51
51
|
name='build-custom-image',
|
52
52
|
description='Whether build custom image or not',
|
53
|
-
prompt='
|
53
|
+
prompt='Does user need to create custom image?',
|
54
54
|
default=True
|
55
55
|
)
|
56
56
|
|
57
57
|
is_container_only_input = BoolInput(
|
58
58
|
name='is-container-only',
|
59
59
|
description='Whether app only run as container or not',
|
60
|
-
prompt='Is container only',
|
60
|
+
prompt='Is this container only?',
|
61
61
|
default=False
|
62
62
|
)
|
63
63
|
|
64
64
|
is_http_port_input = BoolInput(
|
65
65
|
name='is-http-port',
|
66
|
-
description='Whether app run on top of HTTP protocol or not',
|
67
|
-
prompt='Is
|
66
|
+
description='Whether app run on top of HTTP(s) protocol or not',
|
67
|
+
prompt='Is this a web appp (run on top of HTTP(s))?',
|
68
68
|
default=False
|
69
69
|
)
|
70
70
|
|
71
71
|
use_helm_input = BoolInput(
|
72
72
|
name='use-helm',
|
73
73
|
description='Whether using helm for deployment or not',
|
74
|
-
prompt=' '
|
75
|
-
'Use helm for deployment',
|
76
|
-
'(Note: If you choose "No" or "False", you can ignore other',
|
77
|
-
'helm related questions)',
|
78
|
-
]),
|
74
|
+
prompt='Do you want to use helm for deployment?',
|
79
75
|
default=False
|
80
76
|
)
|
81
77
|
|
@@ -0,0 +1 @@
|
|
1
|
+
3.10.0
|
zrb/helper/git/detect_changes.py
CHANGED
zrb/helper/log.py
CHANGED
@@ -12,7 +12,7 @@ ch.setLevel(logging_level)
|
|
12
12
|
|
13
13
|
# create formatter
|
14
14
|
formatter = logging.Formatter(
|
15
|
-
colored('%(levelname)-
|
15
|
+
colored('%(levelname)-6s %(asctime)s', attrs=['dark']) + ' %(message)s'
|
16
16
|
)
|
17
17
|
|
18
18
|
# add formatter to ch
|
zrb/helper/python_task.py
CHANGED
zrb/shell-scripts/rsync-util.sh
CHANGED
zrb/shell-scripts/ssh-util.sh
CHANGED
@@ -1,11 +1,12 @@
|
|
1
|
+
set -e
|
1
2
|
auth_ssh(){
|
2
3
|
if [ "$_CONFIG_SSH_KEY" != "" ]
|
3
4
|
then
|
4
|
-
ssh -p "$_CONFIG_PORT" -i "$_CONFIG_SSH_KEY" "${_CONFIG_USER}@${_CONFIG_HOST}"
|
5
|
+
ssh -t -p "$_CONFIG_PORT" -i "$_CONFIG_SSH_KEY" "${_CONFIG_USER}@${_CONFIG_HOST}" "$1"
|
5
6
|
elif [ "$_CONFIG_PASSWORD" != "" ]
|
6
7
|
then
|
7
|
-
sshpass -p "$_CONFIG_PASSWORD" ssh -p "$_CONFIG_PORT" "${_CONFIG_USER}@${_CONFIG_HOST}"
|
8
|
+
sshpass -p "$_CONFIG_PASSWORD" ssh -t -p "$_CONFIG_PORT" "${_CONFIG_USER}@${_CONFIG_HOST}" "$1"
|
8
9
|
else
|
9
|
-
ssh -p "$_CONFIG_PORT" "${_CONFIG_USER}@${_CONFIG_HOST}"
|
10
|
+
ssh -t -p "$_CONFIG_PORT" "${_CONFIG_USER}@${_CONFIG_HOST}" "$1"
|
10
11
|
fi
|
11
12
|
}
|
zrb/task/base_remote_cmd_task.py
CHANGED
@@ -108,11 +108,17 @@ class SingleBaseRemoteCmdTask(CmdTask):
|
|
108
108
|
|
109
109
|
def _get_shell_env_map(self) -> Mapping[str, Any]:
|
110
110
|
env_map = super()._get_shell_env_map()
|
111
|
-
env_map['_CONFIG_HOST'] = self._remote_config.host
|
112
|
-
env_map['_CONFIG_PORT'] = str(self.
|
113
|
-
|
114
|
-
|
115
|
-
env_map['
|
111
|
+
env_map['_CONFIG_HOST'] = self.render_str(self._remote_config.host)
|
112
|
+
env_map['_CONFIG_PORT'] = str(self.render_int(
|
113
|
+
self._remote_config.port)
|
114
|
+
)
|
115
|
+
env_map['_CONFIG_SSH_KEY'] = self.render_str(
|
116
|
+
self._remote_config.ssh_key
|
117
|
+
)
|
118
|
+
env_map['_CONFIG_USER'] = self.render_str(self._remote_config.user)
|
119
|
+
env_map['_CONFIG_PASSWORD'] = self.render_str(
|
120
|
+
self._remote_config.password
|
121
|
+
)
|
116
122
|
return env_map
|
117
123
|
|
118
124
|
def _get_cmd_str(self, *args: Any, **kwargs: Any) -> str:
|
zrb/task/base_task.py
CHANGED
@@ -14,7 +14,7 @@ from zrb.task_input.any_input import AnyInput
|
|
14
14
|
from zrb.task_input.constant import RESERVED_INPUT_NAMES
|
15
15
|
from zrb.helper.accessories.color import colored
|
16
16
|
from zrb.helper.advertisement import get_advertisement
|
17
|
-
from zrb.helper.string.
|
17
|
+
from zrb.helper.string.modification import double_quote
|
18
18
|
from zrb.helper.string.conversion import to_variable_name
|
19
19
|
from zrb.helper.map.conversion import to_str as map_to_str
|
20
20
|
from zrb.config.config import show_advertisement
|
@@ -267,15 +267,21 @@ class BaseTask(
|
|
267
267
|
self._kwargs = new_kwargs
|
268
268
|
# run the task
|
269
269
|
coroutines = [
|
270
|
-
asyncio.create_task(self._loop_check(
|
270
|
+
asyncio.create_task(self._loop_check()),
|
271
271
|
asyncio.create_task(self._run_all(*new_args, **new_kwargs))
|
272
272
|
]
|
273
273
|
results = await asyncio.gather(*coroutines)
|
274
|
+
if show_advertisement:
|
275
|
+
selected_advertisement = get_advertisement(advertisements)
|
276
|
+
selected_advertisement.show()
|
277
|
+
self._show_done_info()
|
278
|
+
self._show_run_command()
|
274
279
|
result = results[-1]
|
275
280
|
self._print_result(result)
|
276
281
|
return result
|
277
282
|
except Exception as e:
|
278
|
-
self.
|
283
|
+
self.log_error(f'{e}')
|
284
|
+
self._show_run_command()
|
279
285
|
if raise_error:
|
280
286
|
raise
|
281
287
|
finally:
|
@@ -302,24 +308,20 @@ class BaseTask(
|
|
302
308
|
'''
|
303
309
|
print(result)
|
304
310
|
|
305
|
-
async def _loop_check(self
|
311
|
+
async def _loop_check(self) -> bool:
|
306
312
|
self.log_info('Start readiness checking')
|
307
313
|
while not await self._cached_check():
|
308
314
|
self.log_debug('Task is not ready')
|
309
315
|
await asyncio.sleep(self._checking_interval)
|
310
316
|
self._end_timer()
|
311
317
|
self.log_info('State: ready')
|
312
|
-
if show_info:
|
313
|
-
if show_advertisement:
|
314
|
-
selected_advertisement = get_advertisement(advertisements)
|
315
|
-
selected_advertisement.show()
|
316
|
-
self._show_done_info()
|
317
|
-
self._show_run_command()
|
318
318
|
return True
|
319
319
|
|
320
320
|
def _show_run_command(self):
|
321
321
|
params: List[str] = [double_quote(arg) for arg in self._args]
|
322
322
|
for task_input in self.get_all_inputs():
|
323
|
+
if task_input.is_hidden():
|
324
|
+
continue
|
323
325
|
key = task_input.get_name()
|
324
326
|
kwarg_key = self._get_normalized_input_key(key)
|
325
327
|
quoted_value = double_quote(str(self._kwargs[kwarg_key]))
|
zrb/task/base_task_composite.py
CHANGED
@@ -418,11 +418,13 @@ class TaskModelWithPrinterAndTracker(
|
|
418
418
|
prefix = self._get_colored_print_prefix()
|
419
419
|
message_str = f'{message}'.rstrip() if trim_message else f'{message}'
|
420
420
|
print(f'🤖 ○ {prefix} • {message_str}', file=sys.stderr)
|
421
|
+
sys.stderr.flush()
|
421
422
|
|
422
423
|
def print_err(self, message: Any, trim_message: bool = True):
|
423
424
|
prefix = self._get_colored_print_prefix()
|
424
425
|
message_str = f'{message}'.rstrip() if trim_message else f'{message}'
|
425
426
|
print(f'🤖 △ {prefix} • {message_str}', file=sys.stderr)
|
427
|
+
sys.stderr.flush()
|
426
428
|
|
427
429
|
def print_out_dark(self, message: Any, trim_message: bool = True):
|
428
430
|
message_str = f'{message}'
|
zrb/task/cmd_task.py
CHANGED
@@ -16,8 +16,21 @@ import os
|
|
16
16
|
import pathlib
|
17
17
|
import signal
|
18
18
|
import sys
|
19
|
+
import subprocess
|
19
20
|
import time
|
20
21
|
|
22
|
+
_has_stty = True
|
23
|
+
try:
|
24
|
+
_original_stty = subprocess.getoutput('stty -g').rstrip()
|
25
|
+
except Exception:
|
26
|
+
_has_stty = False
|
27
|
+
|
28
|
+
|
29
|
+
def _reset_stty():
|
30
|
+
if _has_stty:
|
31
|
+
subprocess.run(['stty', _original_stty])
|
32
|
+
|
33
|
+
|
21
34
|
CmdVal = Union[str, Iterable[str], Callable[..., Union[Iterable[str], str]]]
|
22
35
|
TCmdTask = TypeVar('TCmdTask', bound='CmdTask')
|
23
36
|
|
@@ -327,9 +340,11 @@ class CmdTask(BaseTask):
|
|
327
340
|
line = await queue.get()
|
328
341
|
if not line:
|
329
342
|
break
|
330
|
-
line_str = line.decode().rstrip()
|
343
|
+
line_str = line.decode('utf-8').rstrip()
|
331
344
|
self._add_to_buffer(buffer, max_size, line_str)
|
345
|
+
_reset_stty()
|
332
346
|
print_log(line_str)
|
347
|
+
_reset_stty()
|
333
348
|
|
334
349
|
def _add_to_buffer(
|
335
350
|
self, buffer: Iterable[str], max_size: int, new_line: str
|
@@ -337,6 +352,6 @@ class CmdTask(BaseTask):
|
|
337
352
|
if len(buffer) >= max_size:
|
338
353
|
buffer.pop(0)
|
339
354
|
buffer.append(new_line)
|
340
|
-
|
355
|
+
|
341
356
|
def __repr__(self) -> str:
|
342
357
|
return f'<CmdTask name={self._name}>'
|
zrb/task/docker_compose_task.py
CHANGED
@@ -10,7 +10,7 @@ from zrb.task_group.group import Group
|
|
10
10
|
from zrb.task_input.any_input import AnyInput
|
11
11
|
from zrb.helper.accessories.name import get_random_name
|
12
12
|
from zrb.helper.string.conversion import to_cmd_name
|
13
|
-
from zrb.helper.string.
|
13
|
+
from zrb.helper.string.modification import double_quote
|
14
14
|
from zrb.helper.docker_compose.file import (
|
15
15
|
read_compose_file, write_compose_file
|
16
16
|
)
|
zrb/task/flow_task.py
CHANGED
@@ -1,113 +1,18 @@
|
|
1
1
|
from zrb.helper.typing import (
|
2
|
-
|
2
|
+
Callable, Iterable, List, Optional, TypeVar, Union
|
3
3
|
)
|
4
4
|
from zrb.helper.typecheck import typechecked
|
5
5
|
from zrb.task.base_task import BaseTask
|
6
6
|
from zrb.task.any_task import AnyTask
|
7
|
-
from zrb.task.task import Task
|
8
|
-
from zrb.task.cmd_task import CmdTask
|
9
7
|
from zrb.task_env.env import Env
|
10
8
|
from zrb.task_env.env_file import EnvFile
|
11
9
|
from zrb.task_group.group import Group
|
12
10
|
from zrb.task_input.any_input import AnyInput
|
13
|
-
from zrb.helper.accessories.name import get_random_name
|
14
11
|
|
15
12
|
|
16
|
-
TFlowNode = TypeVar('TFlowNode', bound='FlowNode')
|
17
13
|
TFlowTask = TypeVar('TFlowTask', bound='FlowTask')
|
18
14
|
|
19
15
|
|
20
|
-
@typechecked
|
21
|
-
class FlowNode():
|
22
|
-
def __init__(
|
23
|
-
self,
|
24
|
-
name: str = '',
|
25
|
-
task: Optional[AnyTask] = None,
|
26
|
-
inputs: Iterable[AnyInput] = [],
|
27
|
-
envs: Iterable[Env] = [],
|
28
|
-
env_files: Iterable[EnvFile] = [],
|
29
|
-
upstreams: Iterable[AnyTask] = [],
|
30
|
-
icon: Optional[str] = None,
|
31
|
-
color: Optional[str] = None,
|
32
|
-
cmd: Union[str, Iterable[str]] = '',
|
33
|
-
cmd_path: str = '',
|
34
|
-
preexec_fn: Optional[Callable[[], Any]] = None,
|
35
|
-
run: Optional[Callable[..., Any]] = None,
|
36
|
-
skip_execution: Union[bool, str, Callable[..., bool]] = False,
|
37
|
-
return_upstream_result: bool = False,
|
38
|
-
nodes: List[Union[TFlowNode, List[TFlowNode]]] = [],
|
39
|
-
):
|
40
|
-
self._name = name if name != '' else get_random_name()
|
41
|
-
self._task = task
|
42
|
-
self._inputs = inputs
|
43
|
-
self._envs = envs
|
44
|
-
self._env_files = env_files
|
45
|
-
self._upstreams = upstreams
|
46
|
-
self._icon = icon
|
47
|
-
self._color = color
|
48
|
-
self._cmd = cmd
|
49
|
-
self._cmd_path = cmd_path
|
50
|
-
self._preexec_fn = preexec_fn
|
51
|
-
self._run_function = run
|
52
|
-
self._nodes = nodes
|
53
|
-
self._skip_execution = skip_execution
|
54
|
-
self._return_upstream_result = return_upstream_result
|
55
|
-
|
56
|
-
def to_task(
|
57
|
-
self,
|
58
|
-
upstreams: List[AnyTask] = [],
|
59
|
-
inputs: List[AnyInput] = [],
|
60
|
-
envs: List[Env] = [],
|
61
|
-
env_files: List[EnvFile] = [],
|
62
|
-
):
|
63
|
-
if self._task is not None:
|
64
|
-
task: AnyTask = self._task.copy()
|
65
|
-
additional_upstreams = self._upstreams + upstreams
|
66
|
-
if len(upstreams) > 0:
|
67
|
-
task.add_upstreams(*additional_upstreams)
|
68
|
-
return task
|
69
|
-
if self._run_function is not None:
|
70
|
-
return Task(
|
71
|
-
name=self._name,
|
72
|
-
upstreams=upstreams + self._upstreams,
|
73
|
-
inputs=inputs + self._inputs,
|
74
|
-
envs=envs + self._envs,
|
75
|
-
env_files=env_files + self._env_files,
|
76
|
-
icon=self._icon,
|
77
|
-
color=self._color,
|
78
|
-
run=self._run_function,
|
79
|
-
skip_execution=self._skip_execution,
|
80
|
-
return_upstream_result=self._return_upstream_result
|
81
|
-
)
|
82
|
-
if self._cmd != '' or self._cmd_path != '':
|
83
|
-
return CmdTask(
|
84
|
-
name=self._name,
|
85
|
-
upstreams=upstreams + self._upstreams,
|
86
|
-
inputs=inputs + self._inputs,
|
87
|
-
envs=envs + self._envs,
|
88
|
-
env_files=env_files + self._env_files,
|
89
|
-
icon=self._icon,
|
90
|
-
color=self._color,
|
91
|
-
cmd=self._cmd,
|
92
|
-
cmd_path=self._cmd_path,
|
93
|
-
preexec_fn=self._preexec_fn,
|
94
|
-
skip_execution=self._skip_execution,
|
95
|
-
return_upstream_result=self._return_upstream_result
|
96
|
-
)
|
97
|
-
return FlowTask(
|
98
|
-
name=self._name,
|
99
|
-
upstreams=upstreams + self._upstreams,
|
100
|
-
inputs=inputs + self._inputs,
|
101
|
-
envs=envs + self._envs,
|
102
|
-
env_files=env_files + self._env_files,
|
103
|
-
icon=self._icon,
|
104
|
-
color=self._color,
|
105
|
-
nodes=self._nodes,
|
106
|
-
skip_execution=self._skip_execution,
|
107
|
-
return_upstream_result=self._return_upstream_result
|
108
|
-
)
|
109
|
-
|
110
|
-
|
111
16
|
@typechecked
|
112
17
|
class FlowTask(BaseTask):
|
113
18
|
|
@@ -126,22 +31,23 @@ class FlowTask(BaseTask):
|
|
126
31
|
checking_interval: float = 0,
|
127
32
|
retry: int = 2,
|
128
33
|
retry_interval: float = 1,
|
129
|
-
|
34
|
+
steps: List[Union[AnyTask, List[AnyTask]]] = [],
|
130
35
|
skip_execution: Union[bool, str, Callable[..., bool]] = False,
|
131
36
|
return_upstream_result: bool = False
|
132
37
|
):
|
133
|
-
final_upstreams: List[AnyTask] = upstreams
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
38
|
+
final_upstreams: List[AnyTask] = list(upstreams)
|
39
|
+
inputs: List[AnyInput] = list(inputs)
|
40
|
+
envs: List[Env] = list(envs)
|
41
|
+
env_files: List[EnvFile] = list(env_files)
|
42
|
+
for step in steps:
|
43
|
+
tasks = self._step_to_tasks(step)
|
44
|
+
new_upstreams = self._get_embeded_tasks(
|
45
|
+
tasks=tasks,
|
46
|
+
upstreams=final_upstreams,
|
47
|
+
inputs=inputs,
|
48
|
+
envs=envs,
|
49
|
+
env_files=env_files
|
50
|
+
)
|
145
51
|
final_upstreams = new_upstreams
|
146
52
|
BaseTask.__init__(
|
147
53
|
self,
|
@@ -166,12 +72,30 @@ class FlowTask(BaseTask):
|
|
166
72
|
def copy(self) -> TFlowTask:
|
167
73
|
return super().copy()
|
168
74
|
|
169
|
-
def
|
170
|
-
self, node: Union[
|
171
|
-
) -> List[
|
172
|
-
if isinstance(node,
|
75
|
+
def _step_to_tasks(
|
76
|
+
self, node: Union[AnyTask, List[AnyTask]]
|
77
|
+
) -> List[AnyTask]:
|
78
|
+
if isinstance(node, AnyTask):
|
173
79
|
return [node]
|
174
80
|
return node
|
175
81
|
|
82
|
+
def _get_embeded_tasks(
|
83
|
+
self,
|
84
|
+
tasks: List[AnyTask],
|
85
|
+
upstreams: List[AnyTask],
|
86
|
+
inputs: List[AnyInput],
|
87
|
+
envs: List[Env],
|
88
|
+
env_files: List[EnvFile],
|
89
|
+
) -> List[AnyTask]:
|
90
|
+
embeded_tasks: List[AnyTask] = []
|
91
|
+
for task in tasks:
|
92
|
+
embeded_task = task.copy()
|
93
|
+
embeded_task.add_upstreams(*upstreams)
|
94
|
+
embeded_task.add_envs(*envs)
|
95
|
+
embeded_task.add_env_files(*env_files)
|
96
|
+
embeded_task.add_inputs(*inputs)
|
97
|
+
embeded_tasks.append(embeded_task)
|
98
|
+
return embeded_tasks
|
99
|
+
|
176
100
|
def __repr__(self) -> str:
|
177
101
|
return f'<FlowTask name={self._name}>'
|
zrb/task/remote_cmd_task.py
CHANGED
@@ -15,7 +15,7 @@ import pathlib
|
|
15
15
|
CURRENT_DIR = os.path.dirname(__file__)
|
16
16
|
SHELL_SCRIPT_DIR = os.path.join(CURRENT_DIR, '..', 'shell-scripts')
|
17
17
|
with open(os.path.join(SHELL_SCRIPT_DIR, 'ssh-util.sh')) as file:
|
18
|
-
|
18
|
+
SSH_UTIL_SCRIPT = file.read()
|
19
19
|
|
20
20
|
ensure_ssh_is_installed = CmdTask(
|
21
21
|
name='ensure-ssh-is-installed',
|
@@ -55,10 +55,14 @@ class RemoteCmdTask(BaseRemoteCmdTask):
|
|
55
55
|
skip_execution: Union[bool, str, Callable[..., bool]] = False
|
56
56
|
):
|
57
57
|
pre_cmd = '\n'.join([
|
58
|
-
|
59
|
-
'
|
58
|
+
SSH_UTIL_SCRIPT,
|
59
|
+
'_SCRIPT="$(cat <<\'ENDSCRIPT\'',
|
60
|
+
])
|
61
|
+
post_cmd = '\n'.join([
|
62
|
+
'ENDSCRIPT',
|
63
|
+
')"',
|
64
|
+
'auth_ssh "$_SCRIPT"'
|
60
65
|
])
|
61
|
-
post_cmd = 'ENDSSH'
|
62
66
|
BaseRemoteCmdTask.__init__(
|
63
67
|
self,
|
64
68
|
name=name,
|
@@ -86,3 +90,6 @@ class RemoteCmdTask(BaseRemoteCmdTask):
|
|
86
90
|
preexec_fn=preexec_fn,
|
87
91
|
skip_execution=skip_execution
|
88
92
|
)
|
93
|
+
|
94
|
+
def __repr__(self) -> str:
|
95
|
+
return f'<RemoteCmdTask name={self._name}>'
|
zrb/task/rsync_task.py
CHANGED
zrb/task_input/any_input.py
CHANGED
zrb/task_input/base_input.py
CHANGED
zrb/task_input/password_input.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
zrb/__init__.py,sha256=
|
1
|
+
zrb/__init__.py,sha256=YJlORtdr5Sro-GoGVft2x137iZ5MWnanMLYV9nPWYwk,1787
|
2
2
|
zrb/__main__.py,sha256=CdfuYSxqlJhnsJPOBOL2_uzEaTZHC3MtpyTuz8QUfUI,314
|
3
3
|
zrb/advertisement.py,sha256=e-1tFPlmEuz8IqaIJ_9-2p9x5cuGsxssJGu5F0wHthI,505
|
4
4
|
zrb/runner.py,sha256=MPCNPMCyiYNZeubSxd1eM2Zr6PCIKF-9pkG385AXElw,118
|
@@ -18,7 +18,7 @@ zrb/builtin/ubuntu.py,sha256=zH7HpcoPoopxifIw9PF1vaU8ZKbzHm2yY7IxfCgnuqs,1596
|
|
18
18
|
zrb/builtin/update.py,sha256=JyLL_4AB__9viYKg5IP-s5kezLh37gyDqD0Fe42zIM8,396
|
19
19
|
zrb/builtin/version.py,sha256=i7NsuSl_MtyufEKrR42p0qHGVMpsPqkxZsewEHnM-QQ,492
|
20
20
|
zrb/builtin/devtool/__init__.py,sha256=fVBAYBSJgPoy_r_CGaY__1pQDca7ucrHxxfVUVHlU2o,568
|
21
|
-
zrb/builtin/devtool/devtool_install.py,sha256=
|
21
|
+
zrb/builtin/devtool/devtool_install.py,sha256=WQ5JGVolriqbKZ6TYIVY-Yc08wkkPgDyI0Ixa8ehyqU,13270
|
22
22
|
zrb/builtin/devtool/aws/install.sh,sha256=KTx2Wqakrb-CYAqvMs7uRATpksQ7lDN81lTu0u-kx64,1626
|
23
23
|
zrb/builtin/devtool/docker/install.sh,sha256=1JvADsN6rUBjgSPFLP7wY9l2fivB-2AYpMCoy0PM0hc,3090
|
24
24
|
zrb/builtin/devtool/gcloud/install.sh,sha256=VAgjO2jS8XLS417bJZS-OHHmY-iwWkkShcW4m_IrUCA,647
|
@@ -51,7 +51,7 @@ zrb/builtin/devtool/zsh/install.sh,sha256=pVkKalZ9dD1dlg1U-_gcknbzkj_sZ0zxBzl5yt
|
|
51
51
|
zrb/builtin/devtool/zsh/resource/config.sh,sha256=SRkcXvVT3tdfS1UDT0-dSj2PKXPLohhyakY6tUEQPjc,4764
|
52
52
|
zrb/builtin/generator/__init__.py,sha256=6HW46_I7njGFSBOr_YHjnlhs3fItnmI2Heal7QU9C-E,1059
|
53
53
|
zrb/builtin/generator/app_generator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
54
|
-
zrb/builtin/generator/app_generator/add.py,sha256=
|
54
|
+
zrb/builtin/generator/app_generator/add.py,sha256=QV97TPTjl_h0vAF7zqP6YVVOdZ3O5oU0ODH_Mw3XEYo,6200
|
55
55
|
zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/add.py,sha256=8jn7RKvnypw_B_olc7VWlzmEorAhliOGk7949FaPRGo,5643
|
56
56
|
zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
57
57
|
zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_common.py,sha256=opwH8JV9q77TpY9oXBRQBCHOXRTo6incSRZEPgIIdbo,1417
|
@@ -67,7 +67,7 @@ zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_m
|
|
67
67
|
zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/cmd/pulumi-up.sh,sha256=9nKPOYa-V8UOQeIeZsd3U9Tps-ELT4jDI71p9xCDPyk,24
|
68
68
|
zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/.gitignore,sha256=JNv1uW5MSzwcomOCnoovDlYMfisobe64ddjiRSqVsYU,31
|
69
69
|
zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/docker-compose.env,sha256=Y7R4t9T0KQIMM5E5qdO7EklkgFjw9yvtxfiopkXrdNY,83
|
70
|
-
zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/docker-compose.yml,sha256=
|
70
|
+
zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/docker-compose.yml,sha256=5rKWEaq7Sa4v0fpSgnEDM9rXLfnArnkRWtlCEJThGX8,712
|
71
71
|
zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/.gitignore,sha256=zF-r8EJ_RaTVRxFpy1mapsxVQV6UAnNcK9q57ynRfig,12
|
72
72
|
zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/Pulumi.yaml,sha256=OpqAWQyuaMkG_wjk4ccynSShAHeR5D5Bkm0C7lQ3rxc,137
|
73
73
|
zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/__main__.py,sha256=w6hyDnh7nif9SePiZCMO42sKutC6arGTwBLBJmj9xtc,2900
|
@@ -81,7 +81,7 @@ zrb/builtin/generator/app_generator/template/build-custom-image/_automate/genera
|
|
81
81
|
zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/image.py,sha256=bK_ZkoFtnNsx5tyuFoVYT90BoZ_fKvHE2dk6yhxXhtU,2047
|
82
82
|
zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/local.py,sha256=36MNKrk3RGrBzS5Gi-OBxAKpuLEUqQaJiaCkjNxL72M,1442
|
83
83
|
zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/docker-compose.env,sha256=UJDFXWREQZaKzNLCWQTfYMxqTDKkhQuXDxd871ffGfQ,60
|
84
|
-
zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/docker-compose.yml,sha256=
|
84
|
+
zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/docker-compose.yml,sha256=83AYXTtsX1DxiXl0jyQLe3jXDdwemvazLOuz6QF8URc,646
|
85
85
|
zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/src/.dockerignore,sha256=gcgHGP-jToU1d1otpcv8m1gJZaLOTPd-MKu84TBz5to,22
|
86
86
|
zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/src/.gitignore,sha256=_PA7gv4MWpPHtRt2VazsIR4YrK5PP2iDJAIgRfs-7f4,39
|
87
87
|
zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/src/Dockerfile,sha256=_U_ij4T5EMSy_rsL1rgvRnY-nyUbIUUm8gixLD_HnKc,214
|
@@ -116,7 +116,7 @@ zrb/builtin/generator/docker_compose_task/template/_automate/snake_zrb_task_name
|
|
116
116
|
zrb/builtin/generator/docker_compose_task/template/src/kebab-zrb-task-name/.dockerignore,sha256=LxhNL1suXmDgt_uwGsgUlRmb8ELu2fr8Rx9ryk-0OUY,12
|
117
117
|
zrb/builtin/generator/docker_compose_task/template/src/kebab-zrb-task-name/.gitignore,sha256=ix0-K99TQUKck1g7GDugxn4sh7JtZQjRa0zlmY6rWQY,30
|
118
118
|
zrb/builtin/generator/docker_compose_task/template/src/kebab-zrb-task-name/docker-compose.env,sha256=gFEOrJNMs9BhKH1tw4nY0bL606E77gKPCX-sYxKT7qo,72
|
119
|
-
zrb/builtin/generator/docker_compose_task/template/src/kebab-zrb-task-name/docker-compose.yml,sha256=
|
119
|
+
zrb/builtin/generator/docker_compose_task/template/src/kebab-zrb-task-name/docker-compose.yml,sha256=NlCmer0mm-NyoF-yDRSlucgpxPrYtc6hVzAVvs8Obpg,762
|
120
120
|
zrb/builtin/generator/docker_compose_task/template/src/kebab-zrb-task-name/image/Dockerfile,sha256=FP1hy9jhwKmjmQHBZ-MsXwnYMKWIYUYj_jD1fn79L88,188
|
121
121
|
zrb/builtin/generator/docker_compose_task/template/src/kebab-zrb-task-name/image/main.py,sha256=UpJoBSo4zNKFSa8-0pdJwCymjJDxVZicdoENshogtjE,447
|
122
122
|
zrb/builtin/generator/docker_compose_task/template/src/kebab-zrb-task-name/image/requirements.txt,sha256=HX56Al9bOoM8Mq1Yc44UE2cfT3XrTZGmHI6T3q7xn50,15
|
@@ -149,7 +149,7 @@ zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/all-module-disable
|
|
149
149
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/all-module-enabled.env,sha256=gu-tRFyAuSNRZAsxKTvf4ILnI0jH3bLkMhq0YU_tiyc,54
|
150
150
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/docker-compose-app.env,sha256=nSsLY7sY4KChJuqF7CcR-MAzPx3hz9ki-Z8XHirsUR4,330
|
151
151
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/docker-compose.env,sha256=UQ7FQtncs2LnzhAnxJkWg1qSwyGRdGfGK5FOVC_9QZM,1238
|
152
|
-
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/docker-compose.yml,sha256=
|
152
|
+
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/docker-compose.yml,sha256=GlS5Q0r1PxWLPngxwVPUeEp7qT2TqSGs0DwTRSorSYk,14405
|
153
153
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/.gitignore,sha256=zF-r8EJ_RaTVRxFpy1mapsxVQV6UAnNcK9q57ynRfig,12
|
154
154
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/Pulumi.yaml,sha256=OpqAWQyuaMkG_wjk4ccynSShAHeR5D5Bkm0C7lQ3rxc,137
|
155
155
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/README.md,sha256=HFvuh8-XTGe5xpIsdXN1iWUwOS89Nl9ljkY92liofAU,1002
|
@@ -1033,6 +1033,7 @@ zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_
|
|
1033
1033
|
zrb/builtin/generator/project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1034
1034
|
zrb/builtin/generator/project/create.py,sha256=DlFGdYHWXQprw4yTeceNTIK0JrsRE4b0q_pI8NlNX5E,2933
|
1035
1035
|
zrb/builtin/generator/project/template/.gitignore,sha256=9Sy-cmSDOIawqlmervgoO1eWMoJpOTUIneOpNqGW2Dw,27
|
1036
|
+
zrb/builtin/generator/project/template/.python-version,sha256=rGeoqWHOE1NzOu73didX8_OyjR9O8b-XNp87WjKbO0s,7
|
1036
1037
|
zrb/builtin/generator/project/template/README.md,sha256=Wie_OIyY388JArOrdj6m9-PL3WwQ5em7yr5fKbR0MfA,2025
|
1037
1038
|
zrb/builtin/generator/project/template/project.sh,sha256=UFZOoUDHd3bIFxl05NC3h0rJ7HvbJiCQQJ5TN4S11mk,1507
|
1038
1039
|
zrb/builtin/generator/project/template/requirements.txt,sha256=X6wrfgHOG6KaaMpDJEsXUp2Eyb-1oLY4e7QnMQqcq68,16
|
@@ -1069,7 +1070,7 @@ zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/cm
|
|
1069
1070
|
zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/cmd/pulumi-up.sh,sha256=9nKPOYa-V8UOQeIeZsd3U9Tps-ELT4jDI71p9xCDPyk,24
|
1070
1071
|
zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/.gitignore,sha256=JNv1uW5MSzwcomOCnoovDlYMfisobe64ddjiRSqVsYU,31
|
1071
1072
|
zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/docker-compose.env,sha256=x1F7S-eO47SX7YpgwCKYNhM8XbeBsZ8AfOgR1lFtLu0,68
|
1072
|
-
zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/docker-compose.yml,sha256=
|
1073
|
+
zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/docker-compose.yml,sha256=83AYXTtsX1DxiXl0jyQLe3jXDdwemvazLOuz6QF8URc,646
|
1073
1074
|
zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/deployment/.gitignore,sha256=zF-r8EJ_RaTVRxFpy1mapsxVQV6UAnNcK9q57ynRfig,12
|
1074
1075
|
zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/deployment/Pulumi.yaml,sha256=OpqAWQyuaMkG_wjk4ccynSShAHeR5D5Bkm0C7lQ3rxc,137
|
1075
1076
|
zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/deployment/__main__.py,sha256=w6hyDnh7nif9SePiZCMO42sKutC6arGTwBLBJmj9xtc,2900
|
@@ -1088,8 +1089,8 @@ zrb/helper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1088
1089
|
zrb/helper/advertisement.py,sha256=0qtrFD_8YSjRZpefStyM9XSnfguaEs717W7Z-9fPu1Y,818
|
1089
1090
|
zrb/helper/cli.py,sha256=cBVqtR1grn_bsajHvWuJj4Lgu2i4Rb4nc85L0Eo6kPs,2487
|
1090
1091
|
zrb/helper/default_env.py,sha256=2VNYNcNZ3xFGj4tlwHUTMs0jxB4jemHGrmNXDDfEF6s,2007
|
1091
|
-
zrb/helper/log.py,sha256=
|
1092
|
-
zrb/helper/python_task.py,sha256
|
1092
|
+
zrb/helper/log.py,sha256=NX07xXkQ1TwS1m8qoXbGvlh79peu8ayMLw_1s9s6R24,516
|
1093
|
+
zrb/helper/python_task.py,sha256=-5yPiqclwEMNiNxta7r-_TUm9iWms4KCzAmlavkzelU,259
|
1093
1094
|
zrb/helper/render_data.py,sha256=7CM6ZMW3l4TCaFs6IHHP5s8o5g0wd2dHQNE1fMM83ZA,652
|
1094
1095
|
zrb/helper/typecheck.py,sha256=A5DBXK15eZOE3iutmoZ1hqSoTcZh_awMF20GZBcL_O8,400
|
1095
1096
|
zrb/helper/typing.py,sha256=ln2ryZMTIrpjGeCrLZNINKjndxj3jP9hyQm9_bcKRdU,258
|
@@ -1117,7 +1118,7 @@ zrb/helper/file/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1117
1118
|
zrb/helper/file/copy_tree.py,sha256=4kVqupzLYyF_neiRsedAFbxkeiK0VYsW45Z2zCkWLXA,1804
|
1118
1119
|
zrb/helper/file/text.py,sha256=_S1uYToMw3lcI95-op_kM_SWNJUyvYNc32XHIcokDWU,807
|
1119
1120
|
zrb/helper/git/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1120
|
-
zrb/helper/git/detect_changes.py,sha256=
|
1121
|
+
zrb/helper/git/detect_changes.py,sha256=6WSYd-yFbUYxHbNNkrFXx2GbG-Fuygd6dArpEyfo2aE,1151
|
1121
1122
|
zrb/helper/loader/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1122
1123
|
zrb/helper/loader/load_module.py,sha256=vOtJn7DY2odeh5So9e0-bhM5ue1HO7eBAEhKmzwOtko,822
|
1123
1124
|
zrb/helper/map/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1125,48 +1126,48 @@ zrb/helper/map/conversion.py,sha256=029zwx2TS4ZpzDNs0JDXY0MvJ71TRow5IgEg7BtACN0,
|
|
1125
1126
|
zrb/helper/string/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1126
1127
|
zrb/helper/string/constant.py,sha256=ZqeyPThMv9--9IJ76l4VsWYmUwHXgUluYjsgLWKpy4c,99
|
1127
1128
|
zrb/helper/string/conversion.py,sha256=cNuqLJ-uLn467O_0R8FVCUdx9iPKlGhvwWXul0zaT5w,1430
|
1128
|
-
zrb/helper/string/double_quote.py,sha256=aQCzU-PAyCg4nzPcbqDNP6keytP_pkBcl_18jq9ly0o,144
|
1129
1129
|
zrb/helper/string/jinja.py,sha256=wxl_wY8gt7ini_I25LjogL2isUccEnNQZ7BMtVd32NE,330
|
1130
|
+
zrb/helper/string/modification.py,sha256=aQCzU-PAyCg4nzPcbqDNP6keytP_pkBcl_18jq9ly0o,144
|
1130
1131
|
zrb/helper/string/parse_replacement.py,sha256=oB5_kc1HmsySMF4CetMn_Za6FBfNmUrrTmrsjVB7S2U,291
|
1131
|
-
zrb/shell-scripts/_common-util.sh,sha256=
|
1132
|
-
zrb/shell-scripts/ensure-docker-is-installed.sh,sha256=
|
1133
|
-
zrb/shell-scripts/ensure-rsync-is-installed.sh,sha256=
|
1134
|
-
zrb/shell-scripts/ensure-ssh-is-installed.sh,sha256=
|
1135
|
-
zrb/shell-scripts/rsync-util.sh,sha256=
|
1136
|
-
zrb/shell-scripts/ssh-util.sh,sha256=
|
1132
|
+
zrb/shell-scripts/_common-util.sh,sha256=6WPPOp_NBUgIMd1K2qlVZ6iYzZ-Xl3lUTzi4RqrpffQ,137
|
1133
|
+
zrb/shell-scripts/ensure-docker-is-installed.sh,sha256=KcgLoMvdXDoVVm0DiN2EHlE4lC7zPS7ZYW3kajHE9k8,2881
|
1134
|
+
zrb/shell-scripts/ensure-rsync-is-installed.sh,sha256=F5aDJbNf4VjaJFi2-6nzoBwG9zNB2jtm_ozhPfxWaDY,975
|
1135
|
+
zrb/shell-scripts/ensure-ssh-is-installed.sh,sha256=c5VNF-R7rPNOLWljv1MhVQ3TXVKQDxHV_fLldZ5zc7Y,2068
|
1136
|
+
zrb/shell-scripts/rsync-util.sh,sha256=E4Of-AugCFKabQvk-mC0RrQ4JexS7JLT5p6Ux92ETcY,326
|
1137
|
+
zrb/shell-scripts/ssh-util.sh,sha256=9lXDzw6oO8HuA4vdbfps_uQMMwKyNYX9fZkZgpK52g8,401
|
1137
1138
|
zrb/task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1138
1139
|
zrb/task/any_task.py,sha256=4lYKeo49MIm3fx754YoX685DGkKpIg1A9uL2xH6EwNE,5064
|
1139
|
-
zrb/task/base_remote_cmd_task.py,sha256
|
1140
|
-
zrb/task/base_task.py,sha256=
|
1141
|
-
zrb/task/base_task_composite.py,sha256=
|
1142
|
-
zrb/task/cmd_task.py,sha256=
|
1140
|
+
zrb/task/base_remote_cmd_task.py,sha256=-jsgMumMFT4PKZjRa2sPNd3A-uVqPldP5wAyAOgfeFI,6744
|
1141
|
+
zrb/task/base_task.py,sha256=feTG24E-gYZKTt3ryoX6xUgFxhPpD1ZxosBvAkeb8Mc,18701
|
1142
|
+
zrb/task/base_task_composite.py,sha256=PNiEj00oGl6l9BQpKuHwzR0m5pE-0s9wn8ek7z6O2ak,16096
|
1143
|
+
zrb/task/cmd_task.py,sha256=jhk-lgOUgrmNlJTYivpj4bbj5ZlFFDAz57QP_lu5amc,11960
|
1143
1144
|
zrb/task/decorator.py,sha256=siKtBFP3GchlHHCc8cMF5BbRm5PlyqjzKMaxtVm_VVw,1734
|
1144
|
-
zrb/task/docker_compose_task.py,sha256=
|
1145
|
-
zrb/task/flow_task.py,sha256=
|
1145
|
+
zrb/task/docker_compose_task.py,sha256=WRFd_bpeCQsXyLaayFKy4p_QjRlwiRe3mvNf-Z_25Gs,12045
|
1146
|
+
zrb/task/flow_task.py,sha256=CsLmff3dEFi77byhcLsUpFrhUdqvoKmebbfzPyvHjFI,3240
|
1146
1147
|
zrb/task/http_checker.py,sha256=YoJ0Na4J6hrd3bBk7dkeItAYR6ioEPPvmTdXnMTdt6M,4826
|
1147
1148
|
zrb/task/path_checker.py,sha256=f5bavTY-RDOPfom-hCni7QTPvDw6bZXS3-fg_21T7pY,3186
|
1148
1149
|
zrb/task/port_checker.py,sha256=jYqlS7aZ_GAYpZd7OYB9xl_wNygT2q8JCnPnAzHa4os,3705
|
1149
|
-
zrb/task/remote_cmd_task.py,sha256=
|
1150
|
+
zrb/task/remote_cmd_task.py,sha256=sZ7rk8929FvC--_qdookoI2E4OpDsdanVR7bU4vAnpw,3085
|
1150
1151
|
zrb/task/resource_maker.py,sha256=q2kwZ5PSfZLjBgznjL3uKqAmsadIIX-D_fS7HagvkqA,5686
|
1151
|
-
zrb/task/rsync_task.py,sha256
|
1152
|
+
zrb/task/rsync_task.py,sha256=-_j5W6DVG9-huRkWSmoHMf8S5s4cxSzablpoDzRvoxk,3273
|
1152
1153
|
zrb/task/task.py,sha256=aOwBVPl3U_dXCMcnrtcN0wPR8cDKbYkzgwa86BZMqBE,236
|
1153
1154
|
zrb/task_env/env.py,sha256=1m1GUK4RhdCRfKtEfuCazppQceVAIO05UhJ5Xp-0FOk,1800
|
1154
1155
|
zrb/task_env/env_file.py,sha256=Ku7WnPu-IkWi0fdjjXjTEvleYHfXO5v-g-0RUO2vVk4,1359
|
1155
1156
|
zrb/task_group/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1156
1157
|
zrb/task_group/group.py,sha256=qPZ79UZzLh5UPqsu2NflE6QAQzV568OPtXHcWloZX1o,1420
|
1157
1158
|
zrb/task_input/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1158
|
-
zrb/task_input/any_input.py,sha256=
|
1159
|
-
zrb/task_input/base_input.py,sha256=
|
1159
|
+
zrb/task_input/any_input.py,sha256=pLHMnH8VteIXS1ZBuBAVz8_WlAcikTUk1WyU_EEXxX4,511
|
1160
|
+
zrb/task_input/base_input.py,sha256=98z4bQDvgKlhf8CFMtakbWjvFwn_Y4XKb4YdSB-OTwE,3144
|
1160
1161
|
zrb/task_input/bool_input.py,sha256=8-Kc4Rdc1dykMHxGUuAnRdnRcyEYfVM8ECtZqT071Fc,1594
|
1161
1162
|
zrb/task_input/choice_input.py,sha256=V7BvsI-cI1CCX1DrQQY9bvwEHBYfNvS1WW5QWreMF_0,1672
|
1162
1163
|
zrb/task_input/constant.py,sha256=yvYY-Cc5eRAUQbe5aJcVVy846yyQYYg7v1hgiFyNikg,42
|
1163
1164
|
zrb/task_input/float_input.py,sha256=flaZvFY55us8vtYuBxuAvvr4mTTAVZ-S8uTUt9AGfNg,1595
|
1164
1165
|
zrb/task_input/int_input.py,sha256=mtNrgs65SL0GCzW5qr6c869UjiJ__zJaiXmJZCaqIJs,1592
|
1165
|
-
zrb/task_input/password_input.py,sha256=
|
1166
|
+
zrb/task_input/password_input.py,sha256=5bkUWyPumryigIy-S_z3nBDCo8sQB8_5PeS_gvPI0HQ,1611
|
1166
1167
|
zrb/task_input/str_input.py,sha256=7cubJJKLCWRoGIRIM0_0WUhya18wvURoytrhVZA4xYI,1592
|
1167
1168
|
zrb/task_input/task_input.py,sha256=HotqM1iYSzwE4PIj8grnEUsvJqjx1dS6Ek7i6ZJLq2Y,83
|
1168
|
-
zrb-0.0.
|
1169
|
-
zrb-0.0.
|
1170
|
-
zrb-0.0.
|
1171
|
-
zrb-0.0.
|
1172
|
-
zrb-0.0.
|
1169
|
+
zrb-0.0.101.dist-info/entry_points.txt,sha256=xTgXc1kBKYhJHEujdaSPHUcJT3-hbyP1mLgwkv-5sSk,40
|
1170
|
+
zrb-0.0.101.dist-info/LICENSE,sha256=WfnGCl8G60EYOPAEkuc8C9m9pdXWDe08NsKj3TBbxsM,728
|
1171
|
+
zrb-0.0.101.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
|
1172
|
+
zrb-0.0.101.dist-info/METADATA,sha256=MtyB1IdgaJJ3KZ44PZElQzqmJHmFjVr7pfwZ4e52uPU,9266
|
1173
|
+
zrb-0.0.101.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|