zrb 0.23.4__py3-none-any.whl → 0.26.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/action/runner.py +8 -5
- zrb/advertisement.py +1 -2
- zrb/builtin/__init__.py +4 -0
- zrb/builtin/base64/decode.py +1 -1
- zrb/builtin/base64/encode.py +1 -1
- zrb/builtin/devtool/install/_helper.py +2 -1
- zrb/builtin/devtool/install/_input.py +2 -2
- zrb/builtin/docker/prune.py +11 -3
- zrb/builtin/env/get.py +3 -2
- zrb/builtin/eval.py +2 -1
- zrb/builtin/git/get_file_changes.py +2 -1
- zrb/builtin/md5/hash.py +1 -1
- zrb/builtin/md5/sum.py +1 -1
- zrb/builtin/monorepo/__init__.py +7 -0
- zrb/builtin/monorepo/_config.py +11 -0
- zrb/builtin/monorepo/_group.py +3 -0
- zrb/builtin/monorepo/_task.py +99 -0
- zrb/builtin/monorepo/add.py +40 -0
- zrb/builtin/monorepo/pull.py +23 -0
- zrb/builtin/monorepo/push.py +35 -0
- zrb/builtin/project/_helper.py +3 -3
- zrb/builtin/project/_input.py +2 -2
- zrb/builtin/project/add/app/generator/generator.py +1 -1
- zrb/builtin/project/add/app/generator/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/snake_zrb_generator_name/snake_zrb_generator_name.py +1 -1
- 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/remove.py +1 -1
- 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 +6 -7
- 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/stop.py +1 -1
- zrb/builtin/project/add/app/generator/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/snake_zrb_generator_name/template/src/kebab-zrb-app-name/docker-compose.yml +0 -2
- zrb/builtin/project/add/app/python/python.py +1 -1
- zrb/builtin/project/add/app/python/template/_automate/snake_zrb_app_name/container/remove.py +1 -1
- zrb/builtin/project/add/app/python/template/_automate/snake_zrb_app_name/container/start.py +6 -7
- zrb/builtin/project/add/app/python/template/_automate/snake_zrb_app_name/container/stop.py +1 -1
- zrb/builtin/project/add/app/python/template/src/kebab-zrb-app-name/docker-compose.yml +0 -2
- zrb/builtin/project/add/fastapp/app/app.py +3 -1
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/_helper.py +2 -53
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/_service_config.py +1 -1
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/microservices/_helper.py +2 -2
- 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/_helper.py +2 -2
- 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/stop.py +2 -0
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/container/support/_helper.py +5 -3
- 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/_automate/snake_zrb_app_name/frontend/build-once.sh +1 -1
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/frontend/build.sh +1 -1
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/microservices/_helper.py +3 -5
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/microservices/start.py +3 -3
- zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/microservices/{start_microservices.py → start_services.py} +2 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/.generator-version +1 -0
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/deployment/_common.py +5 -5
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/deployment/app_helper.py +5 -5
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/docker-compose.yml +2 -2
- 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/component/error.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/kafka/admin.py +4 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/kafka/consumer.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/messagebus.py +4 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/mock.py +4 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/rabbitmq/admin.py +4 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/messagebus/rabbitmq/consumer.py +3 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/model/repo_model.py +3 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/repo/db_repo.py +7 -6
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/repo/repo.py +2 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/repo/search_filter.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/rpc/messagebus/caller.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/rpc/messagebus/server.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/rpc/rpc.py +3 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/component/serializer/serializer.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/config.py +59 -62
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend/package-lock.json +4443 -0
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/helper/async_task.py +1 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/app/app.py +28 -28
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/app/app_lifespan.py +15 -15
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/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/module/auth/component/access_token/scheme.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/component/access_token/util.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/group/repo.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/group/rpc.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/rpc.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/user/api.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/user/model.py +3 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/user/repo.py +3 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/entity/user/rpc.py +3 -2
- 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 +8 -8
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/register_permission.py +2 -2
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/schema/group.py +3 -5
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/schema/permission.py +1 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/schema/request.py +1 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/schema/user.py +5 -7
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/entity/activity/event.py +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/entity/activity/rpc.py +2 -1
- 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 +8 -8
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/schema/activity.py +1 -3
- 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 +8 -8
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_permission_crud.py +8 -8
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_user_crud.py +8 -8
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/auth/test_user_login.py +15 -15
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/test/test_liveness_and_readiness.py +4 -4
- 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/_task_factory.py +1 -2
- zrb/builtin/project/add/fastapp/crud/crud.py +4 -25
- zrb/builtin/project/add/fastapp/crud/nodejs/codemod/package-lock.json +3 -3
- 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/entity/snake_zrb_entity_name/rpc.py +2 -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 +3 -2
- zrb/builtin/project/add/fastapp/crud/template/src/kebab-zrb-app-name/test/snake_zrb_module_name/test_snake_zrb_entity_name.py +9 -8
- 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 +52 -70
- 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 +157 -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 +9 -38
- 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 +8 -8
- zrb/builtin/project/add/plugin/plugin.py +3 -3
- zrb/builtin/project/add/project_task/add.py +1 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/build.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/container/remove.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/container/start.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/container/stop.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/deploy.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/destroy.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/get_env.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/image/build.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/image/push.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/publish.py +2 -1
- zrb/builtin/project/add/project_task/template/_automate/_project/start.py +2 -1
- zrb/builtin/project/add/task/cmd/add.py +1 -1
- zrb/builtin/project/add/task/docker_compose/add.py +1 -1
- zrb/builtin/project/add/task/docker_compose/template/src/kebab-zrb-task-name/docker-compose.yml +0 -2
- zrb/builtin/project/add/task/python/add.py +1 -1
- zrb/builtin/project/add/task/python/template/_automate/snake_zrb_task_name.py +1 -1
- zrb/builtin/project/create/_helper.py +1 -1
- zrb/builtin/project/create/create.py +3 -3
- zrb/builtin/say.py +3 -3
- zrb/builtin/version.py +5 -4
- zrb/config/config.py +24 -14
- zrb/helper/accessories/color.py +2 -1
- zrb/helper/advertisement.py +2 -1
- zrb/helper/asyncio_task.py +23 -0
- zrb/helper/callable.py +4 -1
- zrb/helper/cli.py +20 -6
- zrb/helper/codemod/add_import_module.py +3 -2
- zrb/helper/codemod/add_property_to_class.py +2 -1
- zrb/helper/default_env.py +2 -1
- zrb/helper/docker_compose/fetch_external_env.py +4 -2
- zrb/helper/docker_compose/file.py +3 -1
- zrb/helper/env_map/fetch.py +3 -2
- zrb/helper/file/copy_tree.py +2 -1
- zrb/helper/file/match.py +2 -2
- zrb/helper/git/detect_changes.py +1 -1
- zrb/helper/loader/load_module.py +7 -46
- zrb/helper/loader/load_script.py +57 -0
- zrb/helper/log.py +3 -3
- zrb/helper/map/conversion.py +3 -1
- zrb/helper/string/jinja.py +2 -1
- zrb/helper/string/parse_replacement.py +1 -1
- zrb/helper/typecheck.py +2 -2
- zrb/helper/typing.py +5 -27
- zrb/helper/util.py +13 -1
- zrb/runner.py +2 -2
- zrb/task/any_task.py +9 -17
- zrb/task/any_task_event_handler.py +3 -1
- zrb/task/base_remote_cmd_task.py +3 -10
- zrb/task/base_task/base_task.py +15 -11
- zrb/task/base_task/component/base_task_model.py +15 -22
- zrb/task/base_task/component/common_task_model.py +15 -22
- zrb/task/base_task/component/renderer.py +3 -1
- zrb/task/base_task/component/trackers.py +1 -1
- zrb/task/checker.py +2 -1
- zrb/task/cmd_task.py +10 -22
- zrb/task/decorator.py +3 -1
- zrb/task/docker_compose_start_task.py +146 -0
- zrb/task/docker_compose_task.py +43 -34
- zrb/task/flow_task.py +19 -17
- zrb/task/http_checker.py +3 -9
- zrb/task/looper.py +4 -2
- zrb/task/notifier.py +3 -1
- zrb/task/parallel.py +4 -4
- zrb/task/path_checker.py +6 -12
- zrb/task/path_watcher.py +5 -13
- zrb/task/port_checker.py +3 -9
- zrb/task/recurring_task.py +5 -4
- zrb/task/remote_cmd_task.py +2 -1
- zrb/task/resource_maker.py +6 -13
- zrb/task/rsync_task.py +3 -1
- zrb/task/server.py +13 -12
- zrb/task/time_watcher.py +3 -10
- zrb/task/watcher.py +2 -1
- zrb/task/wiki_task.py +4 -3
- zrb/task_env/env.py +2 -1
- zrb/task_env/env_file.py +7 -6
- zrb/task_group/group.py +8 -7
- zrb/task_input/any_input.py +4 -3
- zrb/task_input/base_input.py +7 -5
- zrb/task_input/bool_input.py +2 -1
- zrb/task_input/choice_input.py +3 -1
- zrb/task_input/float_input.py +2 -1
- zrb/task_input/int_input.py +2 -1
- zrb/task_input/multiline_input.py +5 -3
- zrb/task_input/password_input.py +2 -1
- zrb/task_input/str_input.py +2 -1
- {zrb-0.23.4.dist-info → zrb-0.26.0.dist-info}/METADATA +2 -2
- {zrb-0.23.4.dist-info → zrb-0.26.0.dist-info}/RECORD +242 -214
- 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 -328
- zrb/builtin/project/add/fastapp/module/_helper.py +0 -313
- {zrb-0.23.4.dist-info → zrb-0.26.0.dist-info}/LICENSE +0 -0
- {zrb-0.23.4.dist-info → zrb-0.26.0.dist-info}/WHEEL +0 -0
- {zrb-0.23.4.dist-info → zrb-0.26.0.dist-info}/entry_points.txt +0 -0
zrb/task/base_task/base_task.py
CHANGED
@@ -2,9 +2,11 @@ import asyncio
|
|
2
2
|
import copy
|
3
3
|
import os
|
4
4
|
import shutil
|
5
|
+
from collections.abc import Callable, Iterable, Mapping
|
6
|
+
from typing import Any, Optional, Union
|
5
7
|
|
6
8
|
from zrb.advertisement import advertisements
|
7
|
-
from zrb.config.config import
|
9
|
+
from zrb.config.config import SHOW_ADVERTISEMENT, TMP_DIR
|
8
10
|
from zrb.helper.accessories.name import get_random_name
|
9
11
|
from zrb.helper.advertisement import get_advertisement
|
10
12
|
from zrb.helper.callable import run_async
|
@@ -12,7 +14,6 @@ from zrb.helper.map.conversion import to_str as map_to_str
|
|
12
14
|
from zrb.helper.string.conversion import to_variable_name
|
13
15
|
from zrb.helper.string.modification import double_quote
|
14
16
|
from zrb.helper.typecheck import typechecked
|
15
|
-
from zrb.helper.typing import Any, Callable, Iterable, List, Mapping, Optional, Union
|
16
17
|
from zrb.task.any_task import AnyTask
|
17
18
|
from zrb.task.any_task_event_handler import (
|
18
19
|
OnFailed,
|
@@ -41,14 +42,14 @@ class BaseTask(FinishTracker, AttemptTracker, Renderer, BaseTaskModel, AnyTask):
|
|
41
42
|
Every Task definition should be extended from this class.
|
42
43
|
"""
|
43
44
|
|
44
|
-
__running_tasks:
|
45
|
+
__running_tasks: list[AnyTask] = []
|
45
46
|
|
46
47
|
def __init__(
|
47
48
|
self,
|
48
49
|
name: str,
|
49
50
|
group: Optional[Group] = None,
|
50
51
|
description: str = "",
|
51
|
-
inputs:
|
52
|
+
inputs: list[AnyInput] = [],
|
52
53
|
envs: Iterable[Env] = [],
|
53
54
|
env_files: Iterable[EnvFile] = [],
|
54
55
|
icon: Optional[str] = None,
|
@@ -119,7 +120,7 @@ class BaseTask(FinishTracker, AttemptTracker, Renderer, BaseTaskModel, AnyTask):
|
|
119
120
|
operand.add_upstream(self)
|
120
121
|
return operand
|
121
122
|
if isinstance(operand, AnyParallel):
|
122
|
-
other_tasks:
|
123
|
+
other_tasks: list[AnyTask] = operand.get_tasks()
|
123
124
|
for other_task in other_tasks:
|
124
125
|
other_task.add_upstream(self)
|
125
126
|
return operand
|
@@ -127,7 +128,7 @@ class BaseTask(FinishTracker, AttemptTracker, Renderer, BaseTaskModel, AnyTask):
|
|
127
128
|
def __get_xcom_dir(self, execution_id: Optional[str] = None) -> str:
|
128
129
|
if execution_id is None:
|
129
130
|
execution_id = self.get_execution_id()
|
130
|
-
return os.path.join(
|
131
|
+
return os.path.join(TMP_DIR, f"xcom.{execution_id}")
|
131
132
|
|
132
133
|
def __ensure_xcom_dir_exists(self, execution_id: Optional[str] = None):
|
133
134
|
xcom_dir = self.__get_xcom_dir(execution_id=execution_id)
|
@@ -286,6 +287,9 @@ class BaseTask(FinishTracker, AttemptTracker, Renderer, BaseTaskModel, AnyTask):
|
|
286
287
|
result = results[-1]
|
287
288
|
self._print_result(result)
|
288
289
|
return result
|
290
|
+
except RuntimeError as e:
|
291
|
+
if "event loop is closed" not in str(e).lower():
|
292
|
+
raise e
|
289
293
|
except Exception as e:
|
290
294
|
self.log_error(f"{e}")
|
291
295
|
if raise_error:
|
@@ -303,7 +307,7 @@ class BaseTask(FinishTracker, AttemptTracker, Renderer, BaseTaskModel, AnyTask):
|
|
303
307
|
await asyncio.sleep(self._checking_interval)
|
304
308
|
self._end_timer()
|
305
309
|
if show_done_info:
|
306
|
-
if
|
310
|
+
if SHOW_ADVERTISEMENT:
|
307
311
|
selected_advertisement = get_advertisement(advertisements)
|
308
312
|
selected_advertisement.show()
|
309
313
|
self._show_done_info()
|
@@ -415,7 +419,7 @@ class BaseTask(FinishTracker, AttemptTracker, Renderer, BaseTaskModel, AnyTask):
|
|
415
419
|
# wait all upstream checkers to complete
|
416
420
|
await asyncio.gather(*coroutines)
|
417
421
|
|
418
|
-
async def __trigger_failure(self, tasks:
|
422
|
+
async def __trigger_failure(self, tasks: list[AnyTask]):
|
419
423
|
coroutines = [
|
420
424
|
task.on_failed(is_last_attempt=True, exception=Exception("canceled"))
|
421
425
|
for task in tasks
|
@@ -423,7 +427,7 @@ class BaseTask(FinishTracker, AttemptTracker, Renderer, BaseTaskModel, AnyTask):
|
|
423
427
|
await asyncio.gather(*coroutines)
|
424
428
|
|
425
429
|
async def __trigger_fallbacks(
|
426
|
-
self, tasks:
|
430
|
+
self, tasks: list[AnyTask], kwargs: Mapping[str, Any]
|
427
431
|
):
|
428
432
|
coroutines: Iterable[asyncio.Task] = []
|
429
433
|
for fallback in self.__get_all_fallbacks(tasks):
|
@@ -431,8 +435,8 @@ class BaseTask(FinishTracker, AttemptTracker, Renderer, BaseTaskModel, AnyTask):
|
|
431
435
|
coroutines.append(asyncio.create_task(fallback._run_all(**kwargs)))
|
432
436
|
await asyncio.gather(*coroutines)
|
433
437
|
|
434
|
-
def __get_all_fallbacks(self, tasks:
|
435
|
-
all_fallbacks:
|
438
|
+
def __get_all_fallbacks(self, tasks: list[AnyTask]) -> list[AnyTask]:
|
439
|
+
all_fallbacks: list[AnyTask] = []
|
436
440
|
for task in tasks:
|
437
441
|
task._lock_fallbacks()
|
438
442
|
for fallback in task._get_fallbacks():
|
@@ -2,24 +2,17 @@ import datetime
|
|
2
2
|
import logging
|
3
3
|
import os
|
4
4
|
import sys
|
5
|
+
from collections.abc import Callable, Iterable, Mapping
|
5
6
|
from functools import lru_cache
|
7
|
+
from typing import Any, Optional, Union
|
6
8
|
|
7
|
-
from zrb.config.config import
|
9
|
+
from zrb.config.config import ENV_PREFIX, LOGGING_LEVEL, SHOW_TIME
|
8
10
|
from zrb.helper.accessories.color import colored
|
9
11
|
from zrb.helper.log import logger
|
10
12
|
from zrb.helper.string.conversion import to_variable_name
|
11
13
|
from zrb.helper.string.modification import double_quote
|
12
14
|
from zrb.helper.typecheck import typechecked
|
13
|
-
from zrb.helper.typing import
|
14
|
-
Any,
|
15
|
-
Callable,
|
16
|
-
Iterable,
|
17
|
-
JinjaTemplate,
|
18
|
-
List,
|
19
|
-
Mapping,
|
20
|
-
Optional,
|
21
|
-
Union,
|
22
|
-
)
|
15
|
+
from zrb.helper.typing import JinjaTemplate
|
23
16
|
from zrb.task.any_task import AnyTask
|
24
17
|
from zrb.task.any_task_event_handler import (
|
25
18
|
OnFailed,
|
@@ -48,7 +41,7 @@ class BaseTaskModel(CommonTaskModel, PidModel, TimeTracker):
|
|
48
41
|
name: str,
|
49
42
|
group: Optional[Group] = None,
|
50
43
|
description: str = "",
|
51
|
-
inputs:
|
44
|
+
inputs: list[AnyInput] = [],
|
52
45
|
envs: Iterable[Env] = [],
|
53
46
|
env_files: Iterable[EnvFile] = [],
|
54
47
|
icon: Optional[str] = None,
|
@@ -102,7 +95,7 @@ class BaseTaskModel(CommonTaskModel, PidModel, TimeTracker):
|
|
102
95
|
)
|
103
96
|
PidModel.__init__(self)
|
104
97
|
TimeTracker.__init__(self)
|
105
|
-
self.__args:
|
98
|
+
self.__args: list[Any] = []
|
106
99
|
self.__kwargs: Mapping[str, Any] = {}
|
107
100
|
|
108
101
|
def _set_args(self, args: Iterable[Any]):
|
@@ -118,35 +111,35 @@ class BaseTaskModel(CommonTaskModel, PidModel, TimeTracker):
|
|
118
111
|
self.__kwargs = kwargs
|
119
112
|
|
120
113
|
def log_debug(self, message: Any):
|
121
|
-
if
|
114
|
+
if LOGGING_LEVEL > logging.DEBUG:
|
122
115
|
return
|
123
116
|
prefix = self.__get_log_prefix()
|
124
117
|
colored_message = colored(f"{prefix} • {message}", attrs=["dark"])
|
125
118
|
logger.debug(colored_message)
|
126
119
|
|
127
120
|
def log_warn(self, message: Any):
|
128
|
-
if
|
121
|
+
if LOGGING_LEVEL > logging.WARNING:
|
129
122
|
return
|
130
123
|
prefix = self.__get_log_prefix()
|
131
124
|
colored_message = colored(f"{prefix} • {message}", attrs=["dark"])
|
132
125
|
logger.warning(colored_message)
|
133
126
|
|
134
127
|
def log_info(self, message: Any):
|
135
|
-
if
|
128
|
+
if LOGGING_LEVEL > logging.INFO:
|
136
129
|
return
|
137
130
|
prefix = self.__get_log_prefix()
|
138
131
|
colored_message = colored(f"{prefix} • {message}", attrs=["dark"])
|
139
132
|
logger.info(colored_message)
|
140
133
|
|
141
134
|
def log_error(self, message: Any):
|
142
|
-
if
|
135
|
+
if LOGGING_LEVEL > logging.ERROR:
|
143
136
|
return
|
144
137
|
prefix = self.__get_log_prefix()
|
145
138
|
colored_message = colored(f"{prefix} • {message}", color="red", attrs=["bold"])
|
146
139
|
logger.error(colored_message, exc_info=True)
|
147
140
|
|
148
141
|
def log_critical(self, message: Any):
|
149
|
-
if
|
142
|
+
if LOGGING_LEVEL > logging.CRITICAL:
|
150
143
|
return
|
151
144
|
prefix = self.__get_log_prefix()
|
152
145
|
colored_message = colored(f"{prefix} • {message}", color="red", attrs=["bold"])
|
@@ -192,16 +185,16 @@ class BaseTaskModel(CommonTaskModel, PidModel, TimeTracker):
|
|
192
185
|
self._play_bell()
|
193
186
|
|
194
187
|
def _show_env_prefix(self):
|
195
|
-
if
|
188
|
+
if ENV_PREFIX == "":
|
196
189
|
return
|
197
|
-
colored_env_prefix = colored(
|
190
|
+
colored_env_prefix = colored(ENV_PREFIX, color="yellow")
|
198
191
|
colored_label = colored("Your current environment: ", attrs=["dark"])
|
199
192
|
print(colored(f"{colored_label}{colored_env_prefix}"), file=sys.stderr)
|
200
193
|
|
201
194
|
def _show_run_command(self):
|
202
195
|
if not self.__has_cli_interface:
|
203
196
|
return
|
204
|
-
params:
|
197
|
+
params: list[str] = [double_quote(arg) for arg in self.__args]
|
205
198
|
for task_input in self._get_combined_inputs():
|
206
199
|
if task_input.is_hidden():
|
207
200
|
continue
|
@@ -225,7 +218,7 @@ class BaseTaskModel(CommonTaskModel, PidModel, TimeTracker):
|
|
225
218
|
return colored(text, color=self.get_color())
|
226
219
|
|
227
220
|
def __get_print_prefix(self) -> str:
|
228
|
-
common_prefix = self.__get_common_prefix(show_time=
|
221
|
+
common_prefix = self.__get_common_prefix(show_time=SHOW_TIME)
|
229
222
|
icon = self.get_icon()
|
230
223
|
length = LOG_NAME_LENGTH - len(icon)
|
231
224
|
rjust_cli_name = self.__get_rjust_full_cli_name(length)
|
@@ -1,19 +1,12 @@
|
|
1
1
|
import os
|
2
|
+
from collections.abc import Callable, Iterable, Mapping
|
3
|
+
from typing import Any, Optional, Union
|
2
4
|
|
3
5
|
from zrb.helper.accessories.color import get_random_color
|
4
6
|
from zrb.helper.accessories.icon import get_random_icon
|
5
7
|
from zrb.helper.string.conversion import to_cli_name
|
6
8
|
from zrb.helper.typecheck import typechecked
|
7
|
-
from zrb.helper.typing import
|
8
|
-
Any,
|
9
|
-
Callable,
|
10
|
-
Iterable,
|
11
|
-
JinjaTemplate,
|
12
|
-
List,
|
13
|
-
Mapping,
|
14
|
-
Optional,
|
15
|
-
Union,
|
16
|
-
)
|
9
|
+
from zrb.helper.typing import JinjaTemplate
|
17
10
|
from zrb.helper.util import coalesce_str
|
18
11
|
from zrb.task.any_task import AnyTask
|
19
12
|
from zrb.task.any_task_event_handler import (
|
@@ -39,7 +32,7 @@ class CommonTaskModel:
|
|
39
32
|
name: str,
|
40
33
|
group: Optional[Group] = None,
|
41
34
|
description: str = "",
|
42
|
-
inputs:
|
35
|
+
inputs: list[AnyInput] = [],
|
43
36
|
envs: Iterable[Env] = [],
|
44
37
|
env_files: Iterable[EnvFile] = [],
|
45
38
|
icon: Optional[str] = None,
|
@@ -65,7 +58,7 @@ class CommonTaskModel:
|
|
65
58
|
self._group = group
|
66
59
|
if group is not None:
|
67
60
|
group._add_task(self)
|
68
|
-
checkers_cp:
|
61
|
+
checkers_cp: list[AnyTask] = [checker.copy() for checker in checkers]
|
69
62
|
for checker in checkers_cp:
|
70
63
|
checker.add_env(*envs)
|
71
64
|
checker.add_env_file(*env_files)
|
@@ -104,7 +97,7 @@ class CommonTaskModel:
|
|
104
97
|
self.__has_already_inject_inputs: bool = False
|
105
98
|
self.__has_already_inject_upstreams: bool = False
|
106
99
|
self.__has_already_inject_fallbacks: bool = False
|
107
|
-
self.__all_inputs: Optional[
|
100
|
+
self.__all_inputs: Optional[list[AnyInput]] = None
|
108
101
|
|
109
102
|
def _lock_checkers(self):
|
110
103
|
self.__allow_add_checkers = False
|
@@ -185,7 +178,7 @@ class CommonTaskModel:
|
|
185
178
|
def inject_inputs(self):
|
186
179
|
pass
|
187
180
|
|
188
|
-
def _get_inputs(self) ->
|
181
|
+
def _get_inputs(self) -> list[AnyInput]:
|
189
182
|
if not self.__has_already_inject_inputs:
|
190
183
|
self.inject_inputs()
|
191
184
|
self.__has_already_inject_inputs = True
|
@@ -197,7 +190,7 @@ class CommonTaskModel:
|
|
197
190
|
"""
|
198
191
|
if self.__all_inputs is not None:
|
199
192
|
return self.__all_inputs
|
200
|
-
self.__all_inputs:
|
193
|
+
self.__all_inputs: list[AnyInput] = []
|
201
194
|
existing_input_names: Mapping[str, bool] = {}
|
202
195
|
# Add task inputs
|
203
196
|
inputs = self._get_inputs()
|
@@ -244,7 +237,7 @@ class CommonTaskModel:
|
|
244
237
|
def inject_envs(self):
|
245
238
|
pass
|
246
239
|
|
247
|
-
def _get_envs(self) ->
|
240
|
+
def _get_envs(self) -> list[Env]:
|
248
241
|
if not self.__has_already_inject_envs:
|
249
242
|
self.inject_envs()
|
250
243
|
self.__has_already_inject_envs = True
|
@@ -297,7 +290,7 @@ class CommonTaskModel:
|
|
297
290
|
def inject_upstreams(self):
|
298
291
|
pass
|
299
292
|
|
300
|
-
def _get_upstreams(self) ->
|
293
|
+
def _get_upstreams(self) -> list[AnyTask]:
|
301
294
|
if not self.__has_already_inject_upstreams:
|
302
295
|
self.inject_upstreams()
|
303
296
|
self.__has_already_inject_upstreams = True
|
@@ -316,7 +309,7 @@ class CommonTaskModel:
|
|
316
309
|
def inject_fallbacks(self):
|
317
310
|
pass
|
318
311
|
|
319
|
-
def _get_fallbacks(self) ->
|
312
|
+
def _get_fallbacks(self) -> list[AnyTask]:
|
320
313
|
if not self.__has_already_inject_fallbacks:
|
321
314
|
self.inject_fallbacks()
|
322
315
|
self.__has_already_inject_fallbacks = True
|
@@ -328,7 +321,7 @@ class CommonTaskModel:
|
|
328
321
|
def get_color(self) -> str:
|
329
322
|
return self._color
|
330
323
|
|
331
|
-
def _get_env_files(self) ->
|
324
|
+
def _get_env_files(self) -> list[EnvFile]:
|
332
325
|
if not self.__has_already_inject_env_files:
|
333
326
|
self.inject_env_files()
|
334
327
|
self.__has_already_inject_env_files = True
|
@@ -346,11 +339,11 @@ class CommonTaskModel:
|
|
346
339
|
additional_checkers = self.__complete_new_checkers(checkers)
|
347
340
|
self._checkers = self._checkers + additional_checkers
|
348
341
|
|
349
|
-
def __complete_new_checkers(self, new_checkers:
|
342
|
+
def __complete_new_checkers(self, new_checkers: Iterable[AnyTask]) -> list[AnyTask]:
|
350
343
|
"""
|
351
344
|
For internal use: copy and completing new checkers
|
352
345
|
"""
|
353
|
-
checkers:
|
346
|
+
checkers: list[AnyTask] = [checker.copy() for checker in new_checkers]
|
354
347
|
for checker in checkers:
|
355
348
|
checker.add_input(*self._get_inputs())
|
356
349
|
checker.add_env(*self._get_envs())
|
@@ -360,7 +353,7 @@ class CommonTaskModel:
|
|
360
353
|
def inject_checkers(self):
|
361
354
|
pass
|
362
355
|
|
363
|
-
def _get_checkers(self) ->
|
356
|
+
def _get_checkers(self) -> list[AnyTask]:
|
364
357
|
if not self.__allow_add_checkers:
|
365
358
|
self.inject_checkers()
|
366
359
|
self.__allow_add_checkers = True
|
@@ -1,4 +1,6 @@
|
|
1
1
|
import os
|
2
|
+
from collections.abc import Mapping
|
3
|
+
from typing import Any, Optional, Union
|
2
4
|
|
3
5
|
import jinja2
|
4
6
|
|
@@ -6,7 +8,7 @@ from zrb.helper.render_data import DEFAULT_RENDER_DATA
|
|
6
8
|
from zrb.helper.string.conversion import to_boolean
|
7
9
|
from zrb.helper.string.jinja import is_probably_jinja
|
8
10
|
from zrb.helper.typecheck import typechecked
|
9
|
-
from zrb.helper.typing import
|
11
|
+
from zrb.helper.typing import JinjaTemplate
|
10
12
|
from zrb.task.any_task import AnyTask
|
11
13
|
|
12
14
|
|
zrb/task/checker.py
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
import asyncio
|
2
|
+
from collections.abc import Callable, Iterable
|
3
|
+
from typing import Any, Optional, Union
|
2
4
|
|
3
5
|
from zrb.helper.accessories.color import colored
|
4
6
|
from zrb.helper.log import logger
|
5
7
|
from zrb.helper.typecheck import typechecked
|
6
|
-
from zrb.helper.typing import Any, Callable, Iterable, Optional, Union
|
7
8
|
from zrb.task.any_task import AnyTask
|
8
9
|
from zrb.task.any_task_event_handler import (
|
9
10
|
OnFailed,
|
zrb/task/cmd_task.py
CHANGED
@@ -7,21 +7,15 @@ import signal
|
|
7
7
|
import subprocess
|
8
8
|
import sys
|
9
9
|
import time
|
10
|
+
from collections.abc import Callable, Iterable
|
11
|
+
from typing import Any, Optional, TypeVar, Union
|
10
12
|
|
11
|
-
from zrb.config.config import
|
13
|
+
from zrb.config.config import DEFAULT_SHELL, LOGGING_LEVEL
|
12
14
|
from zrb.helper.accessories.color import colored
|
15
|
+
from zrb.helper.asyncio_task import stop_asyncio_sync
|
13
16
|
from zrb.helper.log import logger
|
14
17
|
from zrb.helper.typecheck import typechecked
|
15
|
-
from zrb.helper.typing import
|
16
|
-
Any,
|
17
|
-
Callable,
|
18
|
-
Iterable,
|
19
|
-
JinjaTemplate,
|
20
|
-
List,
|
21
|
-
Optional,
|
22
|
-
TypeVar,
|
23
|
-
Union,
|
24
|
-
)
|
18
|
+
from zrb.helper.typing import JinjaTemplate
|
25
19
|
from zrb.task.any_task import AnyTask
|
26
20
|
from zrb.task.any_task_event_handler import (
|
27
21
|
OnFailed,
|
@@ -57,7 +51,7 @@ def _reset_stty():
|
|
57
51
|
|
58
52
|
|
59
53
|
def _log_error(message: Any):
|
60
|
-
if
|
54
|
+
if LOGGING_LEVEL > logging.ERROR:
|
61
55
|
return
|
62
56
|
colored_message = colored(f"{message}", color="red", attrs=["bold"])
|
63
57
|
logger.error(colored_message, exc_info=True)
|
@@ -111,7 +105,7 @@ class CmdTask(BaseTask):
|
|
111
105
|
>>> runner.register(hello)
|
112
106
|
"""
|
113
107
|
|
114
|
-
_pids:
|
108
|
+
_pids: list[int] = []
|
115
109
|
_global_state = CmdGlobalState()
|
116
110
|
|
117
111
|
def __init__(
|
@@ -187,8 +181,8 @@ class CmdTask(BaseTask):
|
|
187
181
|
self._max_error_size = max_error_line
|
188
182
|
self._output_buffer: Iterable[str] = []
|
189
183
|
self._error_buffer: Iterable[str] = []
|
190
|
-
if executable is None and
|
191
|
-
executable =
|
184
|
+
if executable is None and DEFAULT_SHELL != "":
|
185
|
+
executable = DEFAULT_SHELL
|
192
186
|
self._executable = executable
|
193
187
|
self._process: Optional[asyncio.subprocess.Process]
|
194
188
|
self._preexec_fn = preexec_fn
|
@@ -296,13 +290,7 @@ class CmdTask(BaseTask):
|
|
296
290
|
_print_out_dark(f"Getting signal {signum}")
|
297
291
|
for pid in self._pids:
|
298
292
|
self.__kill_by_pid(pid)
|
299
|
-
|
300
|
-
for task in tasks:
|
301
|
-
try:
|
302
|
-
task.cancel()
|
303
|
-
except Exception as e:
|
304
|
-
self.print_err(e)
|
305
|
-
time.sleep(0.3)
|
293
|
+
stop_asyncio_sync()
|
306
294
|
_print_out_dark(f"Exiting with signal {signum}")
|
307
295
|
sys.exit(signum)
|
308
296
|
|
zrb/task/decorator.py
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
+
from collections.abc import Callable, Iterable
|
2
|
+
from typing import Any, Optional, Union
|
3
|
+
|
1
4
|
from zrb.action.runner import Runner
|
2
5
|
from zrb.helper.accessories.color import colored
|
3
6
|
from zrb.helper.log import logger
|
4
7
|
from zrb.helper.typecheck import typechecked
|
5
|
-
from zrb.helper.typing import Any, Callable, Iterable, Optional, Union
|
6
8
|
from zrb.task.any_task import AnyTask
|
7
9
|
from zrb.task.any_task_event_handler import (
|
8
10
|
OnFailed,
|
@@ -0,0 +1,146 @@
|
|
1
|
+
import os
|
2
|
+
import pathlib
|
3
|
+
from collections.abc import Callable, Iterable, Mapping
|
4
|
+
from typing import Any, Optional, Union
|
5
|
+
|
6
|
+
from zrb.helper.accessories.color import colored
|
7
|
+
from zrb.helper.log import logger
|
8
|
+
from zrb.helper.typecheck import typechecked
|
9
|
+
from zrb.helper.typing import JinjaTemplate
|
10
|
+
from zrb.task.any_task import AnyTask
|
11
|
+
from zrb.task.any_task_event_handler import (
|
12
|
+
OnFailed,
|
13
|
+
OnReady,
|
14
|
+
OnRetry,
|
15
|
+
OnSkipped,
|
16
|
+
OnStarted,
|
17
|
+
OnTriggered,
|
18
|
+
OnWaiting,
|
19
|
+
)
|
20
|
+
from zrb.task.cmd_task import CmdVal
|
21
|
+
from zrb.task.docker_compose_task import DockerComposeTask, ServiceConfig
|
22
|
+
from zrb.task_env.env import Env
|
23
|
+
from zrb.task_env.env_file import EnvFile
|
24
|
+
from zrb.task_group.group import Group
|
25
|
+
from zrb.task_input.any_input import AnyInput
|
26
|
+
|
27
|
+
logger.debug(colored("Loading zrb.task.docker_compose_task", attrs=["dark"]))
|
28
|
+
|
29
|
+
|
30
|
+
@typechecked
|
31
|
+
class DockerComposeStartTask(DockerComposeTask):
|
32
|
+
def __init__(
|
33
|
+
self,
|
34
|
+
name: str,
|
35
|
+
group: Optional[Group] = None,
|
36
|
+
inputs: Iterable[AnyInput] = [],
|
37
|
+
envs: Iterable[Env] = [],
|
38
|
+
env_files: Iterable[EnvFile] = [],
|
39
|
+
icon: Optional[str] = None,
|
40
|
+
color: Optional[str] = None,
|
41
|
+
description: str = "",
|
42
|
+
executable: Optional[str] = None,
|
43
|
+
compose_service_configs: Mapping[str, ServiceConfig] = {},
|
44
|
+
compose_file: Optional[str] = None,
|
45
|
+
compose_options: Mapping[JinjaTemplate, JinjaTemplate] = {},
|
46
|
+
compose_flags: Iterable[JinjaTemplate] = [],
|
47
|
+
compose_args: Iterable[JinjaTemplate] = [],
|
48
|
+
compose_env_prefix: str = "",
|
49
|
+
setup_cmd: CmdVal = "",
|
50
|
+
setup_cmd_path: CmdVal = "",
|
51
|
+
cwd: Optional[Union[JinjaTemplate, pathlib.Path]] = None,
|
52
|
+
should_render_cwd: bool = True,
|
53
|
+
upstreams: Iterable[AnyTask] = [],
|
54
|
+
fallbacks: Iterable[AnyTask] = [],
|
55
|
+
on_triggered: Optional[OnTriggered] = None,
|
56
|
+
on_waiting: Optional[OnWaiting] = None,
|
57
|
+
on_skipped: Optional[OnSkipped] = None,
|
58
|
+
on_started: Optional[OnStarted] = None,
|
59
|
+
on_ready: Optional[OnReady] = None,
|
60
|
+
on_retry: Optional[OnRetry] = None,
|
61
|
+
on_failed: Optional[OnFailed] = None,
|
62
|
+
checkers: Iterable[AnyTask] = [],
|
63
|
+
checking_interval: Union[float, int] = 0.05,
|
64
|
+
retry: int = 2,
|
65
|
+
retry_interval: Union[float, int] = 1,
|
66
|
+
max_output_line: int = 1000,
|
67
|
+
max_error_line: int = 1000,
|
68
|
+
preexec_fn: Optional[Callable[[], Any]] = os.setsid,
|
69
|
+
should_execute: Union[bool, str, Callable[..., bool]] = True,
|
70
|
+
return_upstream_result: bool = False,
|
71
|
+
should_print_cmd_result: bool = True,
|
72
|
+
should_show_cmd: bool = True,
|
73
|
+
should_show_working_directory: bool = True,
|
74
|
+
):
|
75
|
+
DockerComposeTask.__init__(
|
76
|
+
self,
|
77
|
+
name=name,
|
78
|
+
group=group,
|
79
|
+
inputs=inputs,
|
80
|
+
envs=envs,
|
81
|
+
env_files=env_files,
|
82
|
+
icon=icon,
|
83
|
+
color=color,
|
84
|
+
description=description,
|
85
|
+
executable=executable,
|
86
|
+
compose_service_configs=compose_service_configs,
|
87
|
+
compose_file=compose_file,
|
88
|
+
compose_options=compose_options,
|
89
|
+
compose_flags=compose_flags,
|
90
|
+
compose_args=compose_args,
|
91
|
+
compose_env_prefix=compose_env_prefix,
|
92
|
+
setup_cmd=setup_cmd,
|
93
|
+
setup_cmd_path=setup_cmd_path,
|
94
|
+
cwd=cwd,
|
95
|
+
should_render_cwd=should_render_cwd,
|
96
|
+
upstreams=upstreams,
|
97
|
+
fallbacks=fallbacks,
|
98
|
+
on_triggered=on_triggered,
|
99
|
+
on_waiting=on_waiting,
|
100
|
+
on_skipped=on_skipped,
|
101
|
+
on_started=on_started,
|
102
|
+
on_ready=on_ready,
|
103
|
+
on_retry=on_retry,
|
104
|
+
on_failed=on_failed,
|
105
|
+
checkers=checkers,
|
106
|
+
checking_interval=checking_interval,
|
107
|
+
retry=retry,
|
108
|
+
retry_interval=retry_interval,
|
109
|
+
max_output_line=max_output_line,
|
110
|
+
max_error_line=max_error_line,
|
111
|
+
preexec_fn=preexec_fn,
|
112
|
+
should_execute=should_execute,
|
113
|
+
return_upstream_result=return_upstream_result,
|
114
|
+
should_print_cmd_result=should_print_cmd_result,
|
115
|
+
should_show_cmd=should_show_cmd,
|
116
|
+
should_show_working_directory=should_show_working_directory,
|
117
|
+
)
|
118
|
+
|
119
|
+
def get_cmd_script(self, *args: Any, **kwargs: Any) -> str:
|
120
|
+
# setup
|
121
|
+
setup_cmd = self._create_cmd_script(
|
122
|
+
self._setup_cmd_path, self._setup_cmd, *args, **kwargs
|
123
|
+
)
|
124
|
+
cmd_list = [setup_cmd] if setup_cmd.strip() != "" else []
|
125
|
+
# compose command
|
126
|
+
cmd_list = cmd_list + [
|
127
|
+
# compose start
|
128
|
+
self._get_docker_compose_cmd_script(
|
129
|
+
compose_cmd="up",
|
130
|
+
compose_options=self._compose_options,
|
131
|
+
compose_flags=list(self._compose_flags) + ["-d"],
|
132
|
+
compose_args=self._compose_args,
|
133
|
+
*args,
|
134
|
+
),
|
135
|
+
# compose log
|
136
|
+
self._get_docker_compose_cmd_script(
|
137
|
+
compose_cmd="logs",
|
138
|
+
compose_options={},
|
139
|
+
compose_flags=["-f"],
|
140
|
+
compose_args=[],
|
141
|
+
*args,
|
142
|
+
),
|
143
|
+
]
|
144
|
+
cmd_str = "\n".join(cmd_list)
|
145
|
+
self.log_info(f"Command: {cmd_str}")
|
146
|
+
return cmd_str
|