zrb 0.0.86__py3-none-any.whl → 0.0.88__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 +3 -1
- zrb/action/runner.py +7 -3
- zrb/builtin/__init__.py +1 -1
- zrb/builtin/base64.py +1 -1
- zrb/builtin/devtool/devtool_install.py +13 -4
- zrb/builtin/devtool/helix/install-language-server.sh +33 -0
- zrb/builtin/env.py +6 -3
- zrb/builtin/explain.py +3 -1
- zrb/builtin/generator/__init__.py +4 -8
- zrb/builtin/generator/app_generator/add.py +15 -6
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/add.py +62 -52
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/cmd/app-start.sh +1 -6
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/container.py +1 -1
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/deployment.py +2 -2
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/image.py +1 -1
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/local.py +4 -2
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/src/.gitignore +2 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/src/Dockerfile +10 -5
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/src/go.work +1 -0
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/src/main.go +28 -0
- zrb/builtin/generator/cmd_task/add.py +6 -6
- zrb/builtin/generator/cmd_task/template/_automate/snake_zrb_task_name.py +1 -1
- zrb/builtin/generator/{_common → common}/helper.py +6 -0
- zrb/builtin/generator/{_common → common}/task_factory.py +9 -5
- zrb/builtin/generator/docker_compose_task/add.py +8 -8
- zrb/builtin/generator/docker_compose_task/template/_automate/snake_zrb_task_name.py +1 -1
- zrb/builtin/generator/fastapp/add.py +24 -24
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_common.py +2 -1
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/container.py +1 -1
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/deployment.py +1 -1
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/frontend.py +1 -1
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/image.py +1 -1
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/load_test.py +3 -2
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/local.py +1 -1
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/test.py +2 -4
- zrb/builtin/generator/fastapp_crud/add.py +8 -121
- zrb/builtin/generator/fastapp_crud/helper.py +115 -0
- zrb/builtin/generator/fastapp_crud/{add_navigation.py → task_factory.py} +5 -3
- zrb/builtin/generator/fastapp_field/add.py +8 -280
- zrb/builtin/generator/fastapp_field/helper.py +283 -0
- zrb/builtin/generator/fastapp_module/add.py +19 -328
- zrb/builtin/generator/fastapp_module/helper.py +326 -0
- zrb/builtin/generator/pip_package/add.py +8 -8
- zrb/builtin/generator/pip_package/template/_automate/snake_zrb_package_name/local.py +1 -1
- zrb/builtin/generator/project/create.py +10 -3
- zrb/builtin/generator/project/template/template.env +1 -1
- zrb/builtin/generator/project_task/task_factory.py +33 -21
- zrb/builtin/generator/project_task/template/_automate/_project/build_project_images.py +1 -1
- zrb/builtin/generator/project_task/template/_automate/_project/deploy_project.py +1 -1
- zrb/builtin/generator/project_task/template/_automate/_project/destroy_project.py +1 -1
- zrb/builtin/generator/project_task/template/_automate/_project/push_project_images.py +1 -1
- zrb/builtin/generator/project_task/template/_automate/_project/remove_project_containers.py +1 -1
- zrb/builtin/generator/project_task/template/_automate/_project/start_project.py +1 -1
- zrb/builtin/generator/project_task/template/_automate/_project/start_project_containers.py +1 -1
- zrb/builtin/generator/project_task/template/_automate/_project/stop_project_containers.py +1 -1
- zrb/builtin/generator/python_task/add.py +6 -6
- zrb/builtin/generator/python_task/template/_automate/snake_zrb_task_name.py +1 -1
- zrb/builtin/generator/simple_python_app/add.py +28 -30
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/container.py +1 -1
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/deployment.py +1 -1
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/image.py +1 -1
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/local.py +1 -1
- zrb/builtin/git.py +1 -1
- zrb/builtin/md5.py +1 -1
- zrb/builtin/project.py +1 -1
- zrb/builtin/ubuntu.py +3 -3
- zrb/config/config.py +8 -6
- zrb/helper/accessories/color.py +5 -1
- zrb/helper/accessories/icon.py +2 -0
- zrb/helper/accessories/name.py +2 -0
- zrb/helper/advertisement.py +1 -0
- zrb/helper/cli.py +5 -1
- zrb/helper/codemod/add_argument_to_function.py +3 -0
- zrb/helper/codemod/add_argument_to_function_call.py +3 -0
- zrb/helper/codemod/add_assert_resource.py +2 -0
- zrb/helper/codemod/add_function_call.py +2 -0
- zrb/helper/codemod/add_import_module.py +3 -0
- zrb/helper/codemod/add_key_value_to_dict.py +2 -0
- zrb/helper/codemod/add_property_to_class.py +3 -0
- zrb/helper/codemod/add_upstream_to_task.py +3 -0
- zrb/helper/codemod/append_code_to_function.py +3 -0
- zrb/helper/codemod/format_code.py +2 -0
- zrb/helper/default_env.py +2 -0
- zrb/helper/docker_compose/fetch_external_env.py +3 -0
- zrb/helper/docker_compose/file.py +4 -0
- zrb/helper/env_map/fetch.py +7 -0
- zrb/helper/file/text.py +4 -0
- zrb/helper/git/detect_changes.py +4 -0
- zrb/helper/loader/load_module.py +2 -0
- zrb/helper/map/conversion.py +2 -0
- zrb/helper/string/conversion.py +5 -0
- zrb/helper/string/double_quote.py +6 -2
- zrb/helper/string/jinja.py +2 -0
- zrb/helper/string/parse_replacement.py +2 -0
- zrb/helper/util.py +13 -0
- zrb/task/any_task.py +2 -2
- zrb/task/base_task.py +15 -15
- zrb/task/base_task_composite.py +3 -3
- zrb/task/cmd_task.py +2 -2
- zrb/task/decorator.py +2 -2
- zrb/task/docker_compose_task.py +2 -2
- zrb/task/flow_task.py +5 -5
- zrb/task/http_checker.py +2 -2
- zrb/task/path_checker.py +2 -2
- zrb/task/port_checker.py +2 -2
- zrb/task/resource_maker.py +3 -5
- zrb/task_input/any_input.py +23 -0
- zrb/task_input/base_input.py +46 -43
- zrb/task_input/float_input.py +0 -1
- {zrb-0.0.86.dist-info → zrb-0.0.88.dist-info}/METADATA +1 -1
- {zrb-0.0.86.dist-info → zrb-0.0.88.dist-info}/RECORD +118 -114
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/src/main.py +0 -20
- zrb/builtin/generator/app_generator/template/_automate/snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/src/requirements.txt +0 -1
- zrb/config.toml +0 -0
- /zrb/builtin/generator/{_common → common}/__init__.py +0 -0
- /zrb/builtin/generator/{_common → common}/task_input.py +0 -0
- /zrb/builtin/{_group.py → group.py} +0 -0
- /zrb/task_input/{_constant.py → constant.py} +0 -0
- {zrb-0.0.86.dist-info → zrb-0.0.88.dist-info}/LICENSE +0 -0
- {zrb-0.0.86.dist-info → zrb-0.0.88.dist-info}/WHEEL +0 -0
- {zrb-0.0.86.dist-info → zrb-0.0.88.dist-info}/entry_points.txt +0 -0
zrb/task/flow_task.py
CHANGED
@@ -7,7 +7,7 @@ from .cmd_task import CmdTask
|
|
7
7
|
from ..task_env.env import Env
|
8
8
|
from ..task_env.env_file import EnvFile
|
9
9
|
from ..task_group.group import Group
|
10
|
-
from ..task_input.
|
10
|
+
from ..task_input.any_input import AnyInput
|
11
11
|
from ..helper.accessories.name import get_random_name
|
12
12
|
|
13
13
|
import copy
|
@@ -21,10 +21,10 @@ class FlowNode():
|
|
21
21
|
self,
|
22
22
|
name: str = '',
|
23
23
|
task: Optional[AnyTask] = None,
|
24
|
-
inputs: Iterable[
|
24
|
+
inputs: Iterable[AnyInput] = [],
|
25
25
|
envs: Iterable[Env] = [],
|
26
26
|
env_files: Iterable[EnvFile] = [],
|
27
|
-
upstreams: Iterable[
|
27
|
+
upstreams: Iterable[AnyTask] = [],
|
28
28
|
icon: Optional[str] = None,
|
29
29
|
color: Optional[str] = None,
|
30
30
|
cmd: Union[str, Iterable[str]] = '',
|
@@ -50,7 +50,7 @@ class FlowNode():
|
|
50
50
|
def to_task(
|
51
51
|
self,
|
52
52
|
upstreams: List[AnyTask] = [],
|
53
|
-
inputs: List[
|
53
|
+
inputs: List[AnyInput] = [],
|
54
54
|
envs: List[Env] = [],
|
55
55
|
env_files: List[EnvFile] = [],
|
56
56
|
):
|
@@ -103,7 +103,7 @@ class FlowTask(BaseTask):
|
|
103
103
|
self,
|
104
104
|
name: str,
|
105
105
|
group: Optional[Group] = None,
|
106
|
-
inputs: Iterable[
|
106
|
+
inputs: Iterable[AnyInput] = [],
|
107
107
|
envs: Iterable[Env] = [],
|
108
108
|
env_files: Iterable[EnvFile] = [],
|
109
109
|
icon: Optional[str] = None,
|
zrb/task/http_checker.py
CHANGED
@@ -6,7 +6,7 @@ from .any_task import AnyTask
|
|
6
6
|
from ..task_env.env import Env
|
7
7
|
from ..task_env.env_file import EnvFile
|
8
8
|
from ..task_group.group import Group
|
9
|
-
from ..task_input.
|
9
|
+
from ..task_input.any_input import AnyInput
|
10
10
|
|
11
11
|
import asyncio
|
12
12
|
|
@@ -18,7 +18,7 @@ class HTTPChecker(BaseTask):
|
|
18
18
|
self,
|
19
19
|
name: str = 'http-check',
|
20
20
|
group: Optional[Group] = None,
|
21
|
-
inputs: Iterable[
|
21
|
+
inputs: Iterable[AnyInput] = [],
|
22
22
|
envs: Iterable[Env] = [],
|
23
23
|
env_files: Iterable[EnvFile] = [],
|
24
24
|
icon: Optional[str] = None,
|
zrb/task/path_checker.py
CHANGED
@@ -5,7 +5,7 @@ from .any_task import AnyTask
|
|
5
5
|
from ..task_env.env import Env
|
6
6
|
from ..task_env.env_file import EnvFile
|
7
7
|
from ..task_group.group import Group
|
8
|
-
from ..task_input.
|
8
|
+
from ..task_input.any_input import AnyInput
|
9
9
|
|
10
10
|
import asyncio
|
11
11
|
import os
|
@@ -18,7 +18,7 @@ class PathChecker(BaseTask):
|
|
18
18
|
self,
|
19
19
|
name: str = 'path-check',
|
20
20
|
group: Optional[Group] = None,
|
21
|
-
inputs: Iterable[
|
21
|
+
inputs: Iterable[AnyInput] = [],
|
22
22
|
envs: Iterable[Env] = [],
|
23
23
|
env_files: Iterable[EnvFile] = [],
|
24
24
|
icon: Optional[str] = None,
|
zrb/task/port_checker.py
CHANGED
@@ -5,7 +5,7 @@ from .any_task import AnyTask
|
|
5
5
|
from ..task_env.env import Env
|
6
6
|
from ..task_env.env_file import EnvFile
|
7
7
|
from ..task_group.group import Group
|
8
|
-
from ..task_input.
|
8
|
+
from ..task_input.any_input import AnyInput
|
9
9
|
|
10
10
|
import socket
|
11
11
|
import asyncio
|
@@ -18,7 +18,7 @@ class PortChecker(BaseTask):
|
|
18
18
|
self,
|
19
19
|
name: str = 'port-check',
|
20
20
|
group: Optional[Group] = None,
|
21
|
-
inputs: Iterable[
|
21
|
+
inputs: Iterable[AnyInput] = [],
|
22
22
|
envs: Iterable[Env] = [],
|
23
23
|
env_files: Iterable[EnvFile] = [],
|
24
24
|
icon: Optional[str] = None,
|
zrb/task/resource_maker.py
CHANGED
@@ -5,18 +5,16 @@ from .any_task import AnyTask
|
|
5
5
|
from ..task_env.env import Env
|
6
6
|
from ..task_env.env_file import EnvFile
|
7
7
|
from ..task_group.group import Group
|
8
|
-
from ..task_input.
|
8
|
+
from ..task_input.any_input import AnyInput
|
9
9
|
from ..helper.file.copy_tree import copy_tree
|
10
10
|
from ..helper.util import (
|
11
11
|
to_camel_case, to_pascal_case, to_kebab_case, to_snake_case,
|
12
12
|
to_human_readable, to_capitalized_human_readable
|
13
13
|
)
|
14
14
|
|
15
|
-
import os
|
16
|
-
|
17
15
|
Replacement = Mapping[str, str]
|
18
16
|
ReplacementMutator = Callable[
|
19
|
-
[
|
17
|
+
[AnyTask, Replacement],
|
20
18
|
Replacement
|
21
19
|
]
|
22
20
|
|
@@ -33,7 +31,7 @@ class ResourceMaker(BaseTask):
|
|
33
31
|
replacement_mutator: Optional[ReplacementMutator] = None,
|
34
32
|
excludes: Iterable[str] = [],
|
35
33
|
group: Optional[Group] = None,
|
36
|
-
inputs: Iterable[
|
34
|
+
inputs: Iterable[AnyInput] = [],
|
37
35
|
envs: Iterable[Env] = [],
|
38
36
|
env_files: Iterable[EnvFile] = [],
|
39
37
|
icon: Optional[str] = None,
|
@@ -0,0 +1,23 @@
|
|
1
|
+
from typing import Any, List, Mapping
|
2
|
+
from abc import ABC, abstractmethod
|
3
|
+
|
4
|
+
|
5
|
+
class AnyInput(ABC):
|
6
|
+
'''
|
7
|
+
Task Input specification
|
8
|
+
'''
|
9
|
+
@abstractmethod
|
10
|
+
def get_name(self) -> str:
|
11
|
+
pass
|
12
|
+
|
13
|
+
@abstractmethod
|
14
|
+
def get_default(self) -> Any:
|
15
|
+
pass
|
16
|
+
|
17
|
+
@abstractmethod
|
18
|
+
def get_param_decl(self) -> List[str]:
|
19
|
+
pass
|
20
|
+
|
21
|
+
@abstractmethod
|
22
|
+
def get_options(self) -> Mapping[str, Any]:
|
23
|
+
pass
|
zrb/task_input/base_input.py
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
from typing import Any, List, Mapping, Optional, Union
|
2
2
|
from typeguard import typechecked
|
3
|
-
from .
|
3
|
+
from .any_input import AnyInput
|
4
|
+
from .constant import RESERVED_INPUT_NAMES
|
4
5
|
from ..config.config import show_prompt
|
5
|
-
from ..helper.string.jinja import is_probably_jinja
|
6
6
|
|
7
7
|
|
8
8
|
@typechecked
|
9
|
-
class BaseInput():
|
9
|
+
class BaseInput(AnyInput):
|
10
10
|
|
11
11
|
def __init__(
|
12
12
|
self,
|
@@ -32,54 +32,57 @@ class BaseInput():
|
|
32
32
|
):
|
33
33
|
if name in RESERVED_INPUT_NAMES:
|
34
34
|
raise ValueError(f'Forbidden input name: {name}')
|
35
|
-
self.
|
36
|
-
self.
|
37
|
-
self.
|
38
|
-
self.
|
39
|
-
self.
|
40
|
-
self.
|
41
|
-
self.
|
42
|
-
self.
|
43
|
-
self.
|
44
|
-
self.
|
45
|
-
self.
|
46
|
-
self.
|
47
|
-
self.
|
48
|
-
self.
|
49
|
-
self.
|
50
|
-
self.
|
51
|
-
self.
|
52
|
-
self.
|
53
|
-
self.
|
35
|
+
self._name = name
|
36
|
+
self._shortcut = shortcut
|
37
|
+
self._prompt = prompt
|
38
|
+
self._default = default
|
39
|
+
self._help = description if description is not None else name
|
40
|
+
self._type = type
|
41
|
+
self._show_default = show_default
|
42
|
+
self._confirmation_prompt = confirmation_prompt
|
43
|
+
self._prompt_required = prompt_required
|
44
|
+
self._hide_input = hide_input
|
45
|
+
self._is_flag = is_flag
|
46
|
+
self._flag_value = flag_value
|
47
|
+
self._multiple = multiple
|
48
|
+
self._count = count
|
49
|
+
self._allow_from_autoenv = allow_from_autoenv
|
50
|
+
self._hidden = hidden
|
51
|
+
self._show_choices = show_choices
|
52
|
+
self._show_envvar = show_envvar
|
53
|
+
self._nargs = nargs
|
54
54
|
|
55
55
|
def get_name(self) -> str:
|
56
|
-
return self.
|
56
|
+
return self._name
|
57
|
+
|
58
|
+
def get_default(self) -> Any:
|
59
|
+
return self._default
|
57
60
|
|
58
61
|
def get_param_decl(self) -> List[str]:
|
59
|
-
param_decl: List[str] = [f'--{self.
|
60
|
-
if self.
|
61
|
-
param_decl.append(f'-{self.
|
62
|
+
param_decl: List[str] = [f'--{self._name}']
|
63
|
+
if self._shortcut is not None:
|
64
|
+
param_decl.append(f'-{self._shortcut}')
|
62
65
|
return param_decl
|
63
66
|
|
64
67
|
def get_options(self) -> Mapping[str, Any]:
|
65
68
|
options: Mapping[str, Any] = {
|
66
|
-
'default': self.
|
67
|
-
'help': self.
|
68
|
-
'type': self.
|
69
|
-
'show_default': self.
|
70
|
-
'confirmation_prompt': self.
|
71
|
-
'prompt_required': self.
|
72
|
-
'hide_input': self.
|
73
|
-
'is_flag': self.
|
74
|
-
'flag_value': self.
|
75
|
-
'multiple': self.
|
76
|
-
'count': self.
|
77
|
-
'allow_from_autoenv': self.
|
78
|
-
'hidden': self.
|
79
|
-
'show_choices': self.
|
80
|
-
'show_envvar': self.
|
81
|
-
'nargs': self.
|
69
|
+
'default': self._default,
|
70
|
+
'help': self._help,
|
71
|
+
'type': self._type,
|
72
|
+
'show_default': self._show_default,
|
73
|
+
'confirmation_prompt': self._confirmation_prompt,
|
74
|
+
'prompt_required': self._prompt_required,
|
75
|
+
'hide_input': self._hide_input,
|
76
|
+
'is_flag': self._is_flag,
|
77
|
+
'flag_value': self._flag_value,
|
78
|
+
'multiple': self._multiple,
|
79
|
+
'count': self._count,
|
80
|
+
'allow_from_autoenv': self._allow_from_autoenv,
|
81
|
+
'hidden': self._hidden,
|
82
|
+
'show_choices': self._show_choices,
|
83
|
+
'show_envvar': self._show_envvar,
|
84
|
+
'nargs': self._nargs
|
82
85
|
}
|
83
86
|
if show_prompt:
|
84
|
-
options['prompt'] = self.
|
87
|
+
options['prompt'] = self._prompt
|
85
88
|
return options
|
zrb/task_input/float_input.py
CHANGED