zrb 1.0.0b6__tar.gz → 1.0.0b8__tar.gz
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-1.0.0b6 → zrb-1.0.0b8}/PKG-INFO +1 -1
- {zrb-1.0.0b6 → zrb-1.0.0b8}/pyproject.toml +1 -1
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/__init__.py +2 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/git.py +15 -15
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/git_subtree.py +6 -6
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +3 -3
- zrb-1.0.0b8/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +93 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +3 -3
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/my_entity_service.py +11 -13
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +3 -3
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +11 -13
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +20 -18
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +24 -14
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/setup/tmux/tmux.py +1 -1
- zrb-1.0.0b8/src/zrb/builtin/setup/zsh/zsh.py +55 -0
- zrb-1.0.0b8/src/zrb/builtin/setup/zsh/zsh_config.sh +133 -0
- zrb-1.0.0b8/src/zrb/builtin/setup/zsh/zsh_helper.py +13 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/config.py +0 -1
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/context/any_context.py +2 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/context/context.py +7 -5
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/static/resources/session/current-session.js +19 -12
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/task/cmd_task.py +11 -1
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/task/rsync_task.py +6 -4
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/cmd/command.py +27 -5
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/git.py +18 -18
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/git_subtree.py +6 -6
- zrb-1.0.0b6/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -14
- {zrb-1.0.0b6 → zrb-1.0.0b8}/README.md +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/__main__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/attr/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/attr/type.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/base64.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/group.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/llm/llm_chat.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/llm/previous-session.js +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/llm/tool/api.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/llm/tool/cli.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/llm/tool/rag.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/llm/tool/web.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/md5.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/my_entity_service_factory.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/my_entity_db_repository.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/my_entity_repository.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/my_entity_repository_factory.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/alembic.ini +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_api_client.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_client.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_client_factory.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_direct_client.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/README +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/env.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/script.py.mako +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/versions/.gitkeep +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration_metadata.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/route.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/service/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/migrate.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.amber.min.css +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.blue.min.css +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.cyan.min.css +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.fuchsia.min.css +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.green.min.css +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.grey.min.css +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.indigo.min.css +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.jade.min.css +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.lime.min.css +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.orange.min.css +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pink.min.css +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pumpkin.min.css +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.purple.min.css +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.red.min.css +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.sand.min.css +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.slate.min.css +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.violet.min.css +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.yellow.min.css +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.zinc.min.css +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/session.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/create/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/create/project-template/README.md +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/project/create/project_task.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/python.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/random.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/setup/common_input.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/setup/ubuntu.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/shell/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/builtin/todo.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/callback/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/callback/any_callback.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/callback/callback.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/cmd/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/cmd/cmd_result.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/cmd/cmd_val.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/content_transformer/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/content_transformer/any_content_transformer.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/content_transformer/content_transformer.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/context/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/context/any_shared_context.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/context/shared_context.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/dot_dict/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/dot_dict/dot_dict.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/env/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/env/any_env.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/env/env.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/env/env_file.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/env/env_map.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/group/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/group/any_group.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/group/group.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/input/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/input/any_input.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/input/base_input.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/input/bool_input.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/input/float_input.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/input/int_input.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/input/option_input.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/input/password_input.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/input/str_input.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/input/text_input.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/cli.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/common_util.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_app.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_config/config.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_config/config_factory.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/docs_route.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/error_page/view.html +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/home_page/view.html +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/login_api_route.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/login_page/view.html +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/logout_api_route.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/logout_page/view.html +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/static/resources/common.css +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/static/resources/pico.min.css +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/static/resources/session/event.js +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/static/static_route.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/task_input_api_route.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_route/task_session_api_route.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_schema/session.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_schema/token.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_schema/user.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_util/cookie.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_util/html.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_util/token.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/runner/web_util/user.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/session/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/session/any_session.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/session/session.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/session_state_log/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/session_state_log/session_state_log.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/session_state_logger/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/session_state_logger/any_session_state_logger.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/session_state_logger/file_session_state_logger.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/task/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/task/any_task.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/task/base_task.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/task/base_trigger.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/task/http_check.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/task/llm_task.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/task/make_task.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/task/scaffolder.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/task/scheduler.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/task/task.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/task/tcp_check.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/task_status/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/task_status/task_status.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/attr.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/cli/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/cli/style.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/cli/subcommand.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/cmd/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/cmd/remote.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/codemod/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/codemod/append_code_to_class.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/codemod/append_code_to_function.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/codemod/append_code_to_method.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/codemod/append_key_to_dict.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/codemod/append_param_to_function_call.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/codemod/prepend_code_to_module.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/codemod/prepend_parent_to_class.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/codemod/prepend_property_to_class.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/cron.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/file.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/group.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/llm/tool.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/load.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/run.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/string/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/string/conversion.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/string/format.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/string/name.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/util/todo.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/xcom/__init__.py +0 -0
- {zrb-1.0.0b6 → zrb-1.0.0b8}/src/zrb/xcom/xcom.py +0 -0
@@ -17,6 +17,7 @@ from zrb.builtin.setup.asdf.asdf import setup_asdf
|
|
17
17
|
from zrb.builtin.setup.latex.ubuntu import setup_latex_on_ubuntu
|
18
18
|
from zrb.builtin.setup.tmux.tmux import setup_tmux
|
19
19
|
from zrb.builtin.setup.ubuntu import setup_ubuntu
|
20
|
+
from zrb.builtin.setup.zsh.zsh import setup_zsh
|
20
21
|
from zrb.builtin.shell.autocomplete.bash import make_bash_autocomplete
|
21
22
|
from zrb.builtin.shell.autocomplete.subcmd import get_shell_subcommands
|
22
23
|
from zrb.builtin.shell.autocomplete.zsh import make_zsh_autocomplete
|
@@ -62,3 +63,4 @@ assert setup_ubuntu
|
|
62
63
|
assert setup_latex_on_ubuntu
|
63
64
|
assert setup_asdf
|
64
65
|
assert setup_tmux
|
66
|
+
assert setup_zsh
|
@@ -57,9 +57,9 @@ from zrb.util.git import (
|
|
57
57
|
)
|
58
58
|
async def get_git_diff(ctx: AnyContext):
|
59
59
|
ctx.print(stylize_faint("Get directory"))
|
60
|
-
repo_dir = await get_repo_dir(
|
60
|
+
repo_dir = await get_repo_dir(print_method=ctx.print)
|
61
61
|
diff = await get_diff(
|
62
|
-
repo_dir, ctx.input.source, ctx.input.current,
|
62
|
+
repo_dir, ctx.input.source, ctx.input.current, print_method=ctx.print
|
63
63
|
)
|
64
64
|
result = []
|
65
65
|
decorated = []
|
@@ -88,17 +88,17 @@ async def get_git_diff(ctx: AnyContext):
|
|
88
88
|
)
|
89
89
|
async def prune_local_branches(ctx: AnyContext):
|
90
90
|
ctx.print(stylize_faint("Get directory"))
|
91
|
-
repo_dir = await get_repo_dir(
|
91
|
+
repo_dir = await get_repo_dir(print_method=ctx.print)
|
92
92
|
ctx.print(stylize_faint("Get existing branches"))
|
93
|
-
branches = await get_branches(repo_dir,
|
93
|
+
branches = await get_branches(repo_dir, print_method=ctx.print)
|
94
94
|
ctx.print(stylize_faint("Get current branch"))
|
95
|
-
current_branch = await get_current_branch(repo_dir,
|
95
|
+
current_branch = await get_current_branch(repo_dir, print_method=ctx.print)
|
96
96
|
for branch in branches:
|
97
97
|
if branch == current_branch or branch == "main" or branch == "master":
|
98
98
|
continue
|
99
99
|
ctx.print(stylize_faint(f"Removing local branch: {branch}"))
|
100
100
|
try:
|
101
|
-
await delete_branch(repo_dir, branch,
|
101
|
+
await delete_branch(repo_dir, branch, print_method=ctx.print)
|
102
102
|
except Exception as e:
|
103
103
|
ctx.log_error(e)
|
104
104
|
|
@@ -117,11 +117,11 @@ async def prune_local_branches(ctx: AnyContext):
|
|
117
117
|
)
|
118
118
|
async def git_commit(ctx: AnyContext):
|
119
119
|
ctx.print(stylize_faint("Get directory"))
|
120
|
-
repo_dir = await get_repo_dir(
|
120
|
+
repo_dir = await get_repo_dir(print_method=ctx.print)
|
121
121
|
ctx.print(stylize_faint("Add changes to staging"))
|
122
|
-
await add(repo_dir,
|
122
|
+
await add(repo_dir, print_method=ctx.print)
|
123
123
|
ctx.print(stylize_faint("Commit changes"))
|
124
|
-
await commit(repo_dir, ctx.input.message,
|
124
|
+
await commit(repo_dir, ctx.input.message, print_method=ctx.print)
|
125
125
|
|
126
126
|
|
127
127
|
@make_task(
|
@@ -139,12 +139,12 @@ async def git_commit(ctx: AnyContext):
|
|
139
139
|
)
|
140
140
|
async def git_pull(ctx: AnyContext):
|
141
141
|
ctx.print(stylize_faint("Get directory"))
|
142
|
-
repo_dir = await get_repo_dir(
|
142
|
+
repo_dir = await get_repo_dir(print_method=ctx.print)
|
143
143
|
ctx.print(stylize_faint("Get current branch"))
|
144
|
-
current_branch = await get_current_branch(repo_dir,
|
144
|
+
current_branch = await get_current_branch(repo_dir, print_method=ctx.print)
|
145
145
|
remote = ctx.input.remote
|
146
146
|
ctx.print(stylize_faint(f"Pulling from {remote}/{current_branch}"))
|
147
|
-
await pull(repo_dir, remote, current_branch,
|
147
|
+
await pull(repo_dir, remote, current_branch, print_method=ctx.print)
|
148
148
|
|
149
149
|
|
150
150
|
@make_task(
|
@@ -161,9 +161,9 @@ async def git_pull(ctx: AnyContext):
|
|
161
161
|
alias="push",
|
162
162
|
)
|
163
163
|
async def git_push(ctx: AnyContext):
|
164
|
-
repo_dir = await get_repo_dir(
|
164
|
+
repo_dir = await get_repo_dir(print_method=ctx.print)
|
165
165
|
ctx.print(stylize_faint("Get current branch"))
|
166
|
-
current_branch = await get_current_branch(repo_dir,
|
166
|
+
current_branch = await get_current_branch(repo_dir, print_method=ctx.print)
|
167
167
|
remote = ctx.input.remote
|
168
168
|
ctx.print(stylize_faint(f"Pushing to {remote}/{current_branch}"))
|
169
|
-
await push(repo_dir, remote, current_branch,
|
169
|
+
await push(repo_dir, remote, current_branch, print_method=ctx.print)
|
@@ -35,7 +35,7 @@ from zrb.util.git_subtree import add_subtree, load_config, pull_subtree, push_su
|
|
35
35
|
)
|
36
36
|
async def git_add_subtree(ctx: AnyContext):
|
37
37
|
ctx.print(stylize_faint("Get directory"))
|
38
|
-
repo_dir = await get_repo_dir(
|
38
|
+
repo_dir = await get_repo_dir(print_method=ctx.print)
|
39
39
|
ctx.print(stylize_faint("Add subtree"))
|
40
40
|
await add_subtree(
|
41
41
|
repo_dir=repo_dir,
|
@@ -43,7 +43,7 @@ async def git_add_subtree(ctx: AnyContext):
|
|
43
43
|
repo_url=ctx.input["repo-url"],
|
44
44
|
branch=ctx.input["repo-branch"],
|
45
45
|
prefix=ctx.input["repo-prefix"],
|
46
|
-
|
46
|
+
print_method=ctx.print,
|
47
47
|
)
|
48
48
|
|
49
49
|
|
@@ -56,7 +56,7 @@ async def git_add_subtree(ctx: AnyContext):
|
|
56
56
|
)
|
57
57
|
async def git_pull_subtree(ctx: AnyContext):
|
58
58
|
ctx.print(stylize_faint("Get directory"))
|
59
|
-
repo_dir = await get_repo_dir(
|
59
|
+
repo_dir = await get_repo_dir(print_method=ctx.print)
|
60
60
|
config = load_config(repo_dir)
|
61
61
|
if not config.data:
|
62
62
|
raise ValueError("No subtree config found")
|
@@ -69,7 +69,7 @@ async def git_pull_subtree(ctx: AnyContext):
|
|
69
69
|
prefix=detail.prefix,
|
70
70
|
repo_url=detail.repo_url,
|
71
71
|
branch=detail.branch,
|
72
|
-
|
72
|
+
print_method=ctx.print,
|
73
73
|
)
|
74
74
|
except Exception as e:
|
75
75
|
if first_err is None:
|
@@ -88,7 +88,7 @@ async def git_pull_subtree(ctx: AnyContext):
|
|
88
88
|
)
|
89
89
|
async def git_push_subtree(ctx: AnyContext):
|
90
90
|
ctx.print(stylize_faint("Get directory"))
|
91
|
-
repo_dir = await get_repo_dir(
|
91
|
+
repo_dir = await get_repo_dir(print_method=ctx.print)
|
92
92
|
config = load_config(repo_dir)
|
93
93
|
if not config.data:
|
94
94
|
raise ValueError("No subtree config found")
|
@@ -101,7 +101,7 @@ async def git_push_subtree(ctx: AnyContext):
|
|
101
101
|
prefix=detail.prefix,
|
102
102
|
repo_url=detail.repo_url,
|
103
103
|
branch=detail.branch,
|
104
|
-
|
104
|
+
print_method=ctx.print,
|
105
105
|
)
|
106
106
|
except Exception as e:
|
107
107
|
if first_err is None:
|
@@ -20,11 +20,11 @@ from zrb.util.string.name import get_random_name
|
|
20
20
|
|
21
21
|
|
22
22
|
@make_task(
|
23
|
-
name="validate-
|
23
|
+
name="validate-add-fastapp",
|
24
24
|
input=[project_dir_input, app_name_input],
|
25
25
|
retries=0,
|
26
26
|
)
|
27
|
-
async def
|
27
|
+
async def validate_add_fastapp(ctx: AnyContext):
|
28
28
|
project_dir = ctx.input.project_dir
|
29
29
|
if not os.path.isdir(project_dir):
|
30
30
|
raise ValueError(f"Project directory not exists: {project_dir}")
|
@@ -39,7 +39,7 @@ scaffold_fastapp = Scaffolder(
|
|
39
39
|
project_dir_input,
|
40
40
|
app_name_input,
|
41
41
|
],
|
42
|
-
upstream=
|
42
|
+
upstream=validate_add_fastapp,
|
43
43
|
source_path=os.path.join(os.path.dirname(__file__), "fastapp_template"),
|
44
44
|
render_source_path=False,
|
45
45
|
destination_path="{ctx.input.project_dir}",
|
@@ -0,0 +1,93 @@
|
|
1
|
+
import os
|
2
|
+
|
3
|
+
from my_app_name._zrb.config import APP_DIR
|
4
|
+
from my_app_name._zrb.format_task import format_my_app_name_code
|
5
|
+
from my_app_name._zrb.group import app_create_group
|
6
|
+
from my_app_name._zrb.input import (
|
7
|
+
existing_entity_input,
|
8
|
+
new_column_input,
|
9
|
+
new_column_type_input,
|
10
|
+
)
|
11
|
+
from my_app_name._zrb.util import get_existing_schema_names
|
12
|
+
|
13
|
+
from zrb import AnyContext, Task, make_task
|
14
|
+
from zrb.util.codemod.prepend_property_to_class import prepend_property_to_class
|
15
|
+
from zrb.util.file import read_file, write_file
|
16
|
+
from zrb.util.string.conversion import to_pascal_case, to_snake_case
|
17
|
+
|
18
|
+
|
19
|
+
@make_task(
|
20
|
+
name="validate-add-my-app-name-column",
|
21
|
+
input=existing_entity_input,
|
22
|
+
retries=0,
|
23
|
+
)
|
24
|
+
async def validate_add_my_app_name_column(ctx: AnyContext):
|
25
|
+
schema_name = ctx.input.entity
|
26
|
+
if schema_name not in get_existing_schema_names():
|
27
|
+
raise ValueError(f"Schema not exist: {schema_name}")
|
28
|
+
|
29
|
+
|
30
|
+
@make_task(
|
31
|
+
name="update-my-app-name-schema",
|
32
|
+
input=[
|
33
|
+
existing_entity_input,
|
34
|
+
new_column_input,
|
35
|
+
new_column_type_input,
|
36
|
+
],
|
37
|
+
retries=0,
|
38
|
+
upstream=validate_add_my_app_name_column,
|
39
|
+
)
|
40
|
+
def update_my_app_name_schema(ctx: AnyContext):
|
41
|
+
snake_entity_name = to_snake_case(ctx.input.entity)
|
42
|
+
pascal_entity_name = to_pascal_case(ctx.input.entity)
|
43
|
+
schema_file_path = os.path.join(APP_DIR, "schema", f"{snake_entity_name}.py")
|
44
|
+
existing_code = read_file(schema_file_path)
|
45
|
+
snake_column_name = to_snake_case(ctx.input.column)
|
46
|
+
column_type = ctx.input.type
|
47
|
+
# Base
|
48
|
+
new_code = prepend_property_to_class(
|
49
|
+
original_code=existing_code,
|
50
|
+
class_name=f"{pascal_entity_name}Base",
|
51
|
+
property_name=snake_column_name,
|
52
|
+
annotation=column_type,
|
53
|
+
default_value=_get_default_value(column_type),
|
54
|
+
)
|
55
|
+
# Update
|
56
|
+
new_code = prepend_property_to_class(
|
57
|
+
original_code=new_code,
|
58
|
+
class_name=f"{pascal_entity_name}Update",
|
59
|
+
property_name=snake_column_name,
|
60
|
+
annotation=f"{column_type} | None",
|
61
|
+
default_value="None",
|
62
|
+
)
|
63
|
+
# Table
|
64
|
+
new_code = prepend_property_to_class(
|
65
|
+
original_code=new_code,
|
66
|
+
class_name=f"{pascal_entity_name}",
|
67
|
+
property_name=snake_column_name,
|
68
|
+
annotation=f"{column_type} | None",
|
69
|
+
default_value="Field(index=False)",
|
70
|
+
)
|
71
|
+
write_file(schema_file_path, new_code)
|
72
|
+
|
73
|
+
|
74
|
+
add_my_app_name_column = app_create_group.add_task(
|
75
|
+
Task(
|
76
|
+
name="add-my-app-name-column",
|
77
|
+
description="📊 Create new column on an entity",
|
78
|
+
upstream=update_my_app_name_schema,
|
79
|
+
successor=format_my_app_name_code,
|
80
|
+
retries=0,
|
81
|
+
),
|
82
|
+
alias="column",
|
83
|
+
)
|
84
|
+
|
85
|
+
|
86
|
+
def _get_default_value(data_type: str) -> str:
|
87
|
+
if data_type == "str":
|
88
|
+
return '""'
|
89
|
+
if data_type in ("int", "float"):
|
90
|
+
return "0"
|
91
|
+
if data_type == "bool":
|
92
|
+
return "True"
|
93
|
+
return "None"
|
@@ -48,7 +48,7 @@ from zrb.util.string.conversion import to_snake_case
|
|
48
48
|
|
49
49
|
|
50
50
|
@make_task(
|
51
|
-
name="validate-
|
51
|
+
name="validate-add-my-app-name-entity",
|
52
52
|
input=[
|
53
53
|
existing_module_input,
|
54
54
|
new_entity_input,
|
@@ -57,7 +57,7 @@ from zrb.util.string.conversion import to_snake_case
|
|
57
57
|
],
|
58
58
|
retries=0,
|
59
59
|
)
|
60
|
-
async def
|
60
|
+
async def validate_add_my_app_name_entity(ctx: AnyContext):
|
61
61
|
module_name = to_snake_case(ctx.input.module)
|
62
62
|
if module_name not in get_existing_module_names():
|
63
63
|
raise ValueError(f"Module not exist: {module_name}")
|
@@ -147,7 +147,7 @@ scaffold_my_app_name_entity = Scaffolder(
|
|
147
147
|
),
|
148
148
|
],
|
149
149
|
retries=0,
|
150
|
-
upstream=
|
150
|
+
upstream=validate_add_my_app_name_entity,
|
151
151
|
)
|
152
152
|
|
153
153
|
create_my_app_name_entity_migration = CmdTask(
|
@@ -72,10 +72,8 @@ class MyEntityService(BaseService):
|
|
72
72
|
async def update_my_entity_bulk(
|
73
73
|
self, my_entity_ids: list[str], data: MyEntityUpdateWithAudit
|
74
74
|
) -> MyEntityResponse:
|
75
|
-
|
76
|
-
return await self.my_entity_repository.get_by_ids(
|
77
|
-
[my_entity.id for my_entity in my_entities]
|
78
|
-
)
|
75
|
+
await self.my_entity_repository.update_bulk(my_entity_ids, data)
|
76
|
+
return await self.my_entity_repository.get_by_ids(my_entity_ids)
|
79
77
|
|
80
78
|
@BaseService.route(
|
81
79
|
"/api/v1/my-entities/{my_entity_id}",
|
@@ -85,21 +83,20 @@ class MyEntityService(BaseService):
|
|
85
83
|
async def update_my_entity(
|
86
84
|
self, my_entity_id: str, data: MyEntityUpdateWithAudit
|
87
85
|
) -> MyEntityResponse:
|
88
|
-
|
89
|
-
return await self.my_entity_repository.get_by_id(
|
86
|
+
await self.my_entity_repository.update(my_entity_id, data)
|
87
|
+
return await self.my_entity_repository.get_by_id(my_entity_id)
|
90
88
|
|
91
89
|
@BaseService.route(
|
92
|
-
"/api/v1/my-entities/
|
90
|
+
"/api/v1/my-entities/bulk",
|
93
91
|
methods=["delete"],
|
94
92
|
response_model=MyEntityResponse,
|
95
93
|
)
|
96
94
|
async def delete_my_entity_bulk(
|
97
95
|
self, my_entity_ids: list[str], deleted_by: str
|
98
96
|
) -> MyEntityResponse:
|
99
|
-
my_entities = await self.my_entity_repository.
|
100
|
-
|
101
|
-
|
102
|
-
)
|
97
|
+
my_entities = await self.my_entity_repository.get_by_ids(my_entity_ids)
|
98
|
+
await self.my_entity_repository.delete_bulk(my_entity_ids)
|
99
|
+
return my_entities
|
103
100
|
|
104
101
|
@BaseService.route(
|
105
102
|
"/api/v1/my-entities/{my_entity_id}",
|
@@ -109,5 +106,6 @@ class MyEntityService(BaseService):
|
|
109
106
|
async def delete_my_entity(
|
110
107
|
self, my_entity_id: str, deleted_by: str
|
111
108
|
) -> MyEntityResponse:
|
112
|
-
my_entity = await self.my_entity_repository.
|
113
|
-
|
109
|
+
my_entity = await self.my_entity_repository.get_by_id(my_entity.id)
|
110
|
+
await self.my_entity_repository.delete(my_entity_id)
|
111
|
+
return my_entity
|
@@ -24,11 +24,11 @@ from zrb import AnyContext, ContentTransformer, Scaffolder, Task, make_task
|
|
24
24
|
|
25
25
|
|
26
26
|
@make_task(
|
27
|
-
name="validate-
|
27
|
+
name="validate-add-my-app-name-module",
|
28
28
|
input=new_module_input,
|
29
29
|
retries=0,
|
30
30
|
)
|
31
|
-
async def
|
31
|
+
async def validate_add_my_app_name_module(ctx: AnyContext):
|
32
32
|
if ctx.input.module in get_existing_module_names():
|
33
33
|
raise ValueError(f"Module already exists: {ctx.input.module}")
|
34
34
|
|
@@ -93,7 +93,7 @@ scaffold_my_app_name_module = Scaffolder(
|
|
93
93
|
),
|
94
94
|
],
|
95
95
|
retries=0,
|
96
|
-
upstream=
|
96
|
+
upstream=validate_add_my_app_name_module,
|
97
97
|
)
|
98
98
|
|
99
99
|
add_my_app_name_module = app_create_group.add_task(
|
@@ -76,10 +76,8 @@ class PermissionService(BaseService):
|
|
76
76
|
async def update_permission_bulk(
|
77
77
|
self, permission_ids: list[str], data: PermissionUpdateWithAudit
|
78
78
|
) -> PermissionResponse:
|
79
|
-
|
80
|
-
return await self.permission_repository.get_by_ids(
|
81
|
-
[permission.id for permission in permissions]
|
82
|
-
)
|
79
|
+
await self.permission_repository.update_bulk(permission_ids, data)
|
80
|
+
return await self.permission_repository.get_by_ids(permission_ids)
|
83
81
|
|
84
82
|
@BaseService.route(
|
85
83
|
"/api/v1/permissions/{permission_id}",
|
@@ -89,21 +87,20 @@ class PermissionService(BaseService):
|
|
89
87
|
async def update_permission(
|
90
88
|
self, permission_id: str, data: PermissionUpdateWithAudit
|
91
89
|
) -> PermissionResponse:
|
92
|
-
|
93
|
-
return await self.permission_repository.get_by_id(
|
90
|
+
await self.permission_repository.update(permission_id, data)
|
91
|
+
return await self.permission_repository.get_by_id(permission_id)
|
94
92
|
|
95
93
|
@BaseService.route(
|
96
|
-
"/api/v1/permissions/
|
94
|
+
"/api/v1/permissions/bulk",
|
97
95
|
methods=["delete"],
|
98
96
|
response_model=PermissionResponse,
|
99
97
|
)
|
100
98
|
async def delete_permission_bulk(
|
101
99
|
self, permission_ids: list[str], deleted_by: str
|
102
100
|
) -> PermissionResponse:
|
103
|
-
permissions = await self.permission_repository.
|
104
|
-
|
105
|
-
|
106
|
-
)
|
101
|
+
permissions = await self.permission_repository.get_by_ids(permission_ids)
|
102
|
+
await self.permission_repository.delete_bulk(permission_ids)
|
103
|
+
return permissions
|
107
104
|
|
108
105
|
@BaseService.route(
|
109
106
|
"/api/v1/permissions/{permission_id}",
|
@@ -113,5 +110,6 @@ class PermissionService(BaseService):
|
|
113
110
|
async def delete_permission(
|
114
111
|
self, permission_id: str, deleted_by: str
|
115
112
|
) -> PermissionResponse:
|
116
|
-
permission = await self.permission_repository.
|
117
|
-
|
113
|
+
permission = await self.permission_repository.get_by_id(permission_id)
|
114
|
+
await self.permission_repository.delete(permission_id)
|
115
|
+
return permission
|
@@ -87,17 +87,15 @@ class RoleService(BaseService):
|
|
87
87
|
) -> RoleResponse:
|
88
88
|
permission_ids = [row.get_permission_ids() for row in data]
|
89
89
|
data = [row.get_role_update_with_audit() for row in data]
|
90
|
-
|
91
|
-
if len(
|
92
|
-
updated_by =
|
93
|
-
await self.role_repository.remove_all_permissions(
|
94
|
-
[role.id for role in roles]
|
95
|
-
)
|
90
|
+
await self.role_repository.update_bulk(role_ids, data)
|
91
|
+
if len(role_ids) > 0:
|
92
|
+
updated_by = data[0].updated_by
|
93
|
+
await self.role_repository.remove_all_permissions(role_ids)
|
96
94
|
await self.role_repository.add_permissions(
|
97
|
-
data={
|
95
|
+
data={role_id: permission_ids[i] for i, role_id in enumerate(role_ids)},
|
98
96
|
created_by=updated_by,
|
99
97
|
)
|
100
|
-
return await self.role_repository.get_by_ids(
|
98
|
+
return await self.role_repository.get_by_ids(role_ids)
|
101
99
|
|
102
100
|
@BaseService.route(
|
103
101
|
"/api/v1/roles/{role_id}",
|
@@ -108,24 +106,26 @@ class RoleService(BaseService):
|
|
108
106
|
self, role_id: str, data: RoleUpdateWithPermissionsAndAudit
|
109
107
|
) -> RoleResponse:
|
110
108
|
permission_ids = data.get_permission_ids()
|
111
|
-
|
112
|
-
|
113
|
-
await self.role_repository.remove_all_permissions([
|
109
|
+
role_data = data.get_role_update_with_audit()
|
110
|
+
await self.role_repository.update(role_id, role_data)
|
111
|
+
await self.role_repository.remove_all_permissions([role_id])
|
114
112
|
await self.role_repository.add_permissions(
|
115
|
-
data={
|
113
|
+
data={role_id: permission_ids}, created_by=role_data.updated_by
|
116
114
|
)
|
117
|
-
return await self.role_repository.get_by_id(
|
115
|
+
return await self.role_repository.get_by_id(role_id)
|
118
116
|
|
119
117
|
@BaseService.route(
|
120
|
-
"/api/v1/roles/
|
118
|
+
"/api/v1/roles/bulk",
|
121
119
|
methods=["delete"],
|
122
120
|
response_model=RoleResponse,
|
123
121
|
)
|
124
122
|
async def delete_role_bulk(
|
125
123
|
self, role_ids: list[str], deleted_by: str
|
126
124
|
) -> RoleResponse:
|
127
|
-
roles = await self.role_repository.
|
128
|
-
|
125
|
+
roles = await self.role_repository.get_by_ids(role_ids)
|
126
|
+
await self.role_repository.delete_bulk(role_ids)
|
127
|
+
await self.role_repository.remove_all_permissions(role_ids)
|
128
|
+
return roles
|
129
129
|
|
130
130
|
@BaseService.route(
|
131
131
|
"/api/v1/roles/{role_id}",
|
@@ -133,5 +133,7 @@ class RoleService(BaseService):
|
|
133
133
|
response_model=RoleResponse,
|
134
134
|
)
|
135
135
|
async def delete_role(self, role_id: str, deleted_by: str) -> RoleResponse:
|
136
|
-
role = await self.role_repository.
|
137
|
-
|
136
|
+
role = await self.role_repository.get_by_id(role_id)
|
137
|
+
await self.role_repository.delete(role_id)
|
138
|
+
await self.role_repository.remove_all_permissions([role_id])
|
139
|
+
return role
|
@@ -84,16 +84,16 @@ class UserService(BaseService):
|
|
84
84
|
self, user_ids: list[str], data: UserUpdateWithRolesAndAudit
|
85
85
|
) -> UserResponse:
|
86
86
|
role_ids = [row.get_role_ids() for row in data]
|
87
|
-
|
88
|
-
|
89
|
-
if len(
|
90
|
-
updated_by =
|
91
|
-
await self.user_repository.remove_all_roles(
|
87
|
+
user_data = [row.get_user_create_with_audit() for row in data]
|
88
|
+
await self.user_repository.update_bulk(user_ids, user_data)
|
89
|
+
if len(user_ids) > 0:
|
90
|
+
updated_by = user_data[0].updated_by
|
91
|
+
await self.user_repository.remove_all_roles(user_ids)
|
92
92
|
await self.user_repository.add_roles(
|
93
|
-
data={
|
93
|
+
data={user_id: role_ids[i] for i, user_id in enumerate(user_ids)},
|
94
94
|
updated_by=updated_by,
|
95
95
|
)
|
96
|
-
return await self.user_repository.get_by_ids(
|
96
|
+
return await self.user_repository.get_by_ids(user_ids)
|
97
97
|
|
98
98
|
@BaseService.route(
|
99
99
|
"/api/v1/users/{user_id}",
|
@@ -103,19 +103,27 @@ class UserService(BaseService):
|
|
103
103
|
async def update_user(
|
104
104
|
self, user_id: str, data: UserUpdateWithRolesAndAudit
|
105
105
|
) -> UserResponse:
|
106
|
-
|
107
|
-
|
106
|
+
role_ids = data.get_role_ids()
|
107
|
+
user_data = data.get_user_update_with_audit()
|
108
|
+
await self.user_repository.update(user_id, user_data)
|
109
|
+
await self.user_repository.remove_all_roles([user_id])
|
110
|
+
await self.user_repository.add_roles(
|
111
|
+
data={user_id: role_ids}, created_by=user_data.updated_by
|
112
|
+
)
|
113
|
+
return await self.user_repository.get_by_id(user_id)
|
108
114
|
|
109
115
|
@BaseService.route(
|
110
|
-
"/api/v1/users/
|
116
|
+
"/api/v1/users/bulk",
|
111
117
|
methods=["delete"],
|
112
118
|
response_model=UserResponse,
|
113
119
|
)
|
114
120
|
async def delete_user_bulk(
|
115
121
|
self, user_ids: list[str], deleted_by: str
|
116
122
|
) -> UserResponse:
|
117
|
-
|
118
|
-
|
123
|
+
roles = await self.user_repository.get_by_ids(user_ids)
|
124
|
+
await self.user_repository.delete_bulk(user_ids)
|
125
|
+
await self.user_repository.remove_all_roles(user_ids)
|
126
|
+
return roles
|
119
127
|
|
120
128
|
@BaseService.route(
|
121
129
|
"/api/v1/users/{user_id}",
|
@@ -123,5 +131,7 @@ class UserService(BaseService):
|
|
123
131
|
response_model=UserResponse,
|
124
132
|
)
|
125
133
|
async def delete_user(self, user_id: str, deleted_by: str) -> UserResponse:
|
126
|
-
user = await self.user_repository.
|
127
|
-
|
134
|
+
user = await self.user_repository.get_by_id(user_id)
|
135
|
+
await self.user_repository.delete(user_id)
|
136
|
+
await self.user_repository.remove_all_roles([user_id])
|
137
|
+
return user
|
@@ -0,0 +1,55 @@
|
|
1
|
+
import os
|
2
|
+
|
3
|
+
from zrb.builtin.group import setup_group
|
4
|
+
from zrb.builtin.setup.common_input import package_manager_input, use_sudo_input
|
5
|
+
from zrb.builtin.setup.zsh.zsh_helper import get_install_zsh_cmd
|
6
|
+
from zrb.context.any_context import AnyContext
|
7
|
+
from zrb.input.str_input import StrInput
|
8
|
+
from zrb.task.cmd_task import CmdTask
|
9
|
+
from zrb.task.make_task import make_task
|
10
|
+
from zrb.util.file import read_file, write_file
|
11
|
+
|
12
|
+
install_zsh = CmdTask(
|
13
|
+
name="install-zsh",
|
14
|
+
input=[package_manager_input, use_sudo_input],
|
15
|
+
cmd=get_install_zsh_cmd,
|
16
|
+
)
|
17
|
+
|
18
|
+
install_omz = CmdTask(
|
19
|
+
name="install-omz",
|
20
|
+
cmd='sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"', # noqa
|
21
|
+
upstream=install_zsh,
|
22
|
+
)
|
23
|
+
|
24
|
+
install_zinit = CmdTask(
|
25
|
+
name="install-zinit",
|
26
|
+
cmd='bash -c "$(curl --fail --show-error --silent --location https://raw.githubusercontent.com/zdharma-continuum/zinit/HEAD/scripts/install.sh)"', # noqa
|
27
|
+
upstream=install_zsh,
|
28
|
+
)
|
29
|
+
|
30
|
+
|
31
|
+
@make_task(
|
32
|
+
name="setup-zsh",
|
33
|
+
input=StrInput(
|
34
|
+
name="zsh-config",
|
35
|
+
description="zsh config file",
|
36
|
+
prompt="zsh config file",
|
37
|
+
default_str="~/.zshrc",
|
38
|
+
),
|
39
|
+
upstream=[install_omz, install_zinit],
|
40
|
+
description="💻 Setup `zsh`.",
|
41
|
+
group=setup_group,
|
42
|
+
alias="zsh",
|
43
|
+
)
|
44
|
+
def setup_zsh(ctx: AnyContext):
|
45
|
+
zsh_config = read_file(os.path.join(os.path.dirname(__file__), "zsh_config.sh"))
|
46
|
+
zsh_config_file = os.path.expanduser(ctx.input["zsh-config"])
|
47
|
+
# Make sure config file exists
|
48
|
+
if not os.path.isfile(zsh_config_file):
|
49
|
+
write_file(zsh_config_file, "")
|
50
|
+
content = read_file(zsh_config_file)
|
51
|
+
if zsh_config in content:
|
52
|
+
return
|
53
|
+
# Write config
|
54
|
+
write_file(zsh_config_file, [content, zsh_config, ""])
|
55
|
+
ctx.print("Setup complete, restart your terminal to continue")
|