wexample-wex-addon-dev-php 12.2.0__tar.gz → 12.3.1__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.
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/PKG-INFO +8 -8
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/README.md +4 -4
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/pyproject.toml +4 -4
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/file/php_composer_json_file.py +19 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/composer/commands/service/install_local.py +17 -1
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/commands/service/watch.py +50 -8
- wexample_wex_addon_dev_php-12.3.1/src/wexample_wex_addon_dev_php/services/symfony/commands/translations/translate.py +89 -0
- {wexample_wex_addon_dev_php-12.2.0/src/wexample_wex_addon_dev_php/services/wordpress → wexample_wex_addon_dev_php-12.3.1/src/wexample_wex_addon_dev_php/services/symfony/knowledge}/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0/tests → wexample_wex_addon_dev_php-12.3.1/src/wexample_wex_addon_dev_php}/workdir/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/workdir/php_symfony_workdir.py +4 -1
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/workdir/php_workdir.py +22 -0
- wexample_wex_addon_dev_php-12.3.1/tests/workdir/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/__pycache__/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/config_value/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/config_value/php_package_readme_config_value.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/const/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/const/tags.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/file/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/formatter/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/formatter/php_code_formatter.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/php_addon_manager.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/py.typed +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/resources/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/resources/design_rules/php_code.md +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/resources/docker/Dockerfile.roave +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/resources/writing_rules/php_code.md +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/composer/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/composer/commands/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/composer/commands/service/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/composer/commands/service/refresh_lock.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/composer/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/composer/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/composer/service.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/frankenphp/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/frankenphp/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/frankenphp/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/caddy/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/caddy/Caddyfile +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/dev/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/dev/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/local/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/local/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/prod/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/prod/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/php/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/php/web.ini +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/frankenphp/service.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/laravel/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/laravel/app_service.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/laravel/commands/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/laravel/commands/db/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/laravel/commands/db/migrate.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/laravel/commands/maintenance/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/laravel/commands/maintenance/disable.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/laravel/commands/maintenance/enable.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/laravel/commands/service/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/laravel/commands/service/install_local.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/laravel/commands/service/refresh_lock.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/laravel/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/laravel/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/laravel/samples/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/laravel/samples/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/laravel/samples/env/dev/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/laravel/samples/env/prod/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/laravel/service.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/php/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/php/ai/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/php/ai/shared/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/php/ai/shared/context.j2 +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/php/ai/shared/php.j2 +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/php/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/php/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/php/samples/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/php/samples/caddy/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/php/samples/caddy/Caddyfile +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/php/samples/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/php/samples/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/php/samples/env/dev/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/php/samples/env/dev/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/php/samples/env/local/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/php/samples/env/local/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/php/samples/env/prod/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/php/samples/env/prod/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/php/samples/php/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/php/samples/php/web.ini +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/php/service.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/phpmyadmin/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/phpmyadmin/commands/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/phpmyadmin/commands/runtime/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/phpmyadmin/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/phpmyadmin/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/phpmyadmin/env/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/phpmyadmin/env/local/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/phpmyadmin/service.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/ai/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/ai/agents/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/ai/agents/editor/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/ai/agents/editor/agent.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/ai/agents/editor/context.j2 +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/ai/shared/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/ai/shared/context.j2 +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/app_service.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/commands/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/commands/service/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/commands/service/deploy.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/commands/service/install_local.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0/src/wexample_wex_addon_dev_php/services/symfony/knowledge → wexample_wex_addon_dev_php-12.3.1/src/wexample_wex_addon_dev_php/services/symfony/commands/translations}/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/knowledge/entity.md +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/samples/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/samples/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/samples/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/samples/docker/env.build +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/samples/docker/images/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/samples/docker/images/Dockerfile.dev +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/samples/docker/images/Dockerfile.release +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/samples/env/dev/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/samples/env/dev/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/samples/env/local/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/samples/env/local/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/samples/env/prod/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/samples/env/prod/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/symfony/service.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0/src/wexample_wex_addon_dev_php/workdir → wexample_wex_addon_dev_php-12.3.1/src/wexample_wex_addon_dev_php/services/wordpress}/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/wordpress/commands/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/wordpress/commands/service/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/wordpress/commands/url/__init__.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/wordpress/commands/url/replace.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/wordpress/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/wordpress/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/wordpress/samples/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/wordpress/samples/docker/docker-compose-cli.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/wordpress/samples/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/wordpress/samples/env/dev/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/wordpress/samples/env/local/wp-cli/.gitkeep +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/wordpress/samples/env/prod/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/services/wordpress/service.yml +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/workdir/php_package_workdir.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/src/wexample_wex_addon_dev_php/workdir/php_packages_suite_workdir.py +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/tests/.gitkeep +0 -0
- {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.1}/tests/workdir/test_php_package_workdir.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: wexample-wex-addon-dev-php
|
|
3
|
-
Version: 12.
|
|
3
|
+
Version: 12.3.1
|
|
4
4
|
Summary: Extends wex with PHP-specific development commands for Composer, Laravel, Symfony, and WordPress services running in Docker containers
|
|
5
5
|
Author-Email: weeger <contact@wexample.com>
|
|
6
6
|
License: MIT
|
|
@@ -13,9 +13,9 @@ Requires-Dist: attrs>=23.1.0
|
|
|
13
13
|
Requires-Dist: cattrs>=23.1.0
|
|
14
14
|
Requires-Dist: wexample-filestate-php>=6.4.0
|
|
15
15
|
Requires-Dist: wexample-filestate-symfony>=2.0.0
|
|
16
|
-
Requires-Dist: wexample-wex-addon-ai>=
|
|
17
|
-
Requires-Dist: wexample-wex-addon-app>=
|
|
18
|
-
Requires-Dist: wexample-wex-addon-dev-javascript>=8.
|
|
16
|
+
Requires-Dist: wexample-wex-addon-ai>=16.1.0
|
|
17
|
+
Requires-Dist: wexample-wex-addon-app>=32.1.0
|
|
18
|
+
Requires-Dist: wexample-wex-addon-dev-javascript>=8.2.0
|
|
19
19
|
Provides-Extra: dev
|
|
20
20
|
Requires-Dist: pytest; extra == "dev"
|
|
21
21
|
Requires-Dist: pytest-cov; extra == "dev"
|
|
@@ -23,7 +23,7 @@ Description-Content-Type: text/markdown
|
|
|
23
23
|
|
|
24
24
|
# wex_addon_dev_php
|
|
25
25
|
|
|
26
|
-
Version: 12.
|
|
26
|
+
Version: 12.3.1
|
|
27
27
|
|
|
28
28
|
`wex_addon_dev_php` extends the wex CLI with PHP-specific development commands for Composer, Laravel, Symfony, and WordPress services running in Docker containers. It is aimed at PHP developers who manage their apps through wex and need framework-aware automation — dependency wiring, migration runs, lock-file refreshes — executed directly inside the running service containers. The addon registers four workdir types (`php`, `php-package`, `php-packages-suite`, `php-symfony`) and contributes its commands through the standard `PhpAddonManager` plugin point.
|
|
29
29
|
|
|
@@ -275,9 +275,9 @@ Visit the [Wexample Suite documentation](https://docs.wexample.com) for the comp
|
|
|
275
275
|
- cattrs: >=23.1.0
|
|
276
276
|
- wexample-filestate-php: >=6.4.0
|
|
277
277
|
- wexample-filestate-symfony: >=2.0.0
|
|
278
|
-
- wexample-wex-addon-ai: >=
|
|
279
|
-
- wexample-wex-addon-app: >=
|
|
280
|
-
- wexample-wex-addon-dev-javascript: >=8.
|
|
278
|
+
- wexample-wex-addon-ai: >=16.1.0
|
|
279
|
+
- wexample-wex-addon-app: >=32.1.0
|
|
280
|
+
- wexample-wex-addon-dev-javascript: >=8.2.0
|
|
281
281
|
|
|
282
282
|
## Versioning & Compatibility Policy
|
|
283
283
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# wex_addon_dev_php
|
|
2
2
|
|
|
3
|
-
Version: 12.
|
|
3
|
+
Version: 12.3.1
|
|
4
4
|
|
|
5
5
|
`wex_addon_dev_php` extends the wex CLI with PHP-specific development commands for Composer, Laravel, Symfony, and WordPress services running in Docker containers. It is aimed at PHP developers who manage their apps through wex and need framework-aware automation — dependency wiring, migration runs, lock-file refreshes — executed directly inside the running service containers. The addon registers four workdir types (`php`, `php-package`, `php-packages-suite`, `php-symfony`) and contributes its commands through the standard `PhpAddonManager` plugin point.
|
|
6
6
|
|
|
@@ -252,9 +252,9 @@ Visit the [Wexample Suite documentation](https://docs.wexample.com) for the comp
|
|
|
252
252
|
- cattrs: >=23.1.0
|
|
253
253
|
- wexample-filestate-php: >=6.4.0
|
|
254
254
|
- wexample-filestate-symfony: >=2.0.0
|
|
255
|
-
- wexample-wex-addon-ai: >=
|
|
256
|
-
- wexample-wex-addon-app: >=
|
|
257
|
-
- wexample-wex-addon-dev-javascript: >=8.
|
|
255
|
+
- wexample-wex-addon-ai: >=16.1.0
|
|
256
|
+
- wexample-wex-addon-app: >=32.1.0
|
|
257
|
+
- wexample-wex-addon-dev-javascript: >=8.2.0
|
|
258
258
|
|
|
259
259
|
## Versioning & Compatibility Policy
|
|
260
260
|
|
|
@@ -6,7 +6,7 @@ build-backend = "pdm.backend"
|
|
|
6
6
|
|
|
7
7
|
[project]
|
|
8
8
|
name = "wexample-wex-addon-dev-php"
|
|
9
|
-
version = "12.
|
|
9
|
+
version = "12.3.1"
|
|
10
10
|
description = "Extends wex with PHP-specific development commands for Composer, Laravel, Symfony, and WordPress services running in Docker containers"
|
|
11
11
|
authors = [
|
|
12
12
|
{ name = "weeger", email = "contact@wexample.com" },
|
|
@@ -22,9 +22,9 @@ dependencies = [
|
|
|
22
22
|
"cattrs>=23.1.0",
|
|
23
23
|
"wexample-filestate-php>=6.4.0",
|
|
24
24
|
"wexample-filestate-symfony>=2.0.0",
|
|
25
|
-
"wexample-wex-addon-ai>=
|
|
26
|
-
"wexample-wex-addon-app>=
|
|
27
|
-
"wexample-wex-addon-dev-javascript>=8.
|
|
25
|
+
"wexample-wex-addon-ai>=16.1.0",
|
|
26
|
+
"wexample-wex-addon-app>=32.1.0",
|
|
27
|
+
"wexample-wex-addon-dev-javascript>=8.2.0",
|
|
28
28
|
]
|
|
29
29
|
|
|
30
30
|
[project.readme]
|
|
@@ -93,6 +93,25 @@ class PhpComposerJsonFile(AppDependenciesConfigFileMixin, JsonFile):
|
|
|
93
93
|
# wrappers are unwrapped to native str — matches the dict[str, str] signature.
|
|
94
94
|
return require.to_dict_or_none() or {}
|
|
95
95
|
|
|
96
|
+
def get_dev_autoload_directories(self) -> list[str]:
|
|
97
|
+
"""Directories autoloaded in development only, as `autoload-dev` maps them."""
|
|
98
|
+
autoload_dev = self.read_parsed().get("autoload-dev") or {}
|
|
99
|
+
directories: list[str] = []
|
|
100
|
+
|
|
101
|
+
for paths in (autoload_dev.get("psr-4") or {}).values():
|
|
102
|
+
directories.extend([paths] if isinstance(paths, str) else paths)
|
|
103
|
+
directories.extend(autoload_dev.get("classmap") or [])
|
|
104
|
+
|
|
105
|
+
return [directory.rstrip("/") for directory in directories if directory]
|
|
106
|
+
|
|
107
|
+
def get_dev_dependencies_versions(self) -> dict[str, str]:
|
|
108
|
+
require_dev = self.read_config().search(path="require-dev")
|
|
109
|
+
|
|
110
|
+
if not require_dev:
|
|
111
|
+
return {}
|
|
112
|
+
|
|
113
|
+
return require_dev.to_dict_or_none() or {}
|
|
114
|
+
|
|
96
115
|
def set_private_registry_packages(self, package_names: list[str]) -> bool:
|
|
97
116
|
"""Bound every custom composer registry to the private packages.
|
|
98
117
|
|
|
@@ -23,6 +23,10 @@ VENDOR_DEV_DIR = "/var/www/vendor-dev"
|
|
|
23
23
|
# /usr/bin/composer pinned to an older php) pass their own composer_bin.
|
|
24
24
|
COMPOSER_BIN = "composer"
|
|
25
25
|
|
|
26
|
+
# What `composer install` exits with when composer.json has changed since the
|
|
27
|
+
# lock was written.
|
|
28
|
+
COMPOSER_EXIT_LOCK_OUTDATED = 4
|
|
29
|
+
|
|
26
30
|
|
|
27
31
|
@command(
|
|
28
32
|
type=COMMAND_TYPE_SERVICE,
|
|
@@ -56,6 +60,11 @@ def composer__service__install_local(
|
|
|
56
60
|
|
|
57
61
|
vendors = " ".join(sorted(php_packages.to_dict().keys()))
|
|
58
62
|
|
|
63
|
+
# A composer.json edited since the lock was written makes `install` refuse
|
|
64
|
+
# to start (exit code 4). Locally that lock has no value to keep: it is
|
|
65
|
+
# written again from composer.json, exactly as deleting it would — and only
|
|
66
|
+
# then, so an up-to-date lock is installed as it is.
|
|
67
|
+
#
|
|
59
68
|
# Composer keeps the (possibly stale) registry version of a package even
|
|
60
69
|
# when a newer local source exists, so the deterministic wiring is a
|
|
61
70
|
# forced symlink over vendor/ — every local package of each declared
|
|
@@ -63,7 +72,14 @@ def composer__service__install_local(
|
|
|
63
72
|
script = f"""
|
|
64
73
|
set -e
|
|
65
74
|
cd {APP_DIR}
|
|
66
|
-
|
|
75
|
+
status=0
|
|
76
|
+
{composer_bin} install --no-scripts || status=$?
|
|
77
|
+
if [ "$status" -eq {COMPOSER_EXIT_LOCK_OUTDATED} ]; then
|
|
78
|
+
echo " composer.lock is behind composer.json, writing it again"
|
|
79
|
+
{composer_bin} update --no-scripts
|
|
80
|
+
elif [ "$status" -ne 0 ]; then
|
|
81
|
+
exit "$status"
|
|
82
|
+
fi
|
|
67
83
|
for vendor in {vendors}; do
|
|
68
84
|
[ -d "{VENDOR_DEV_DIR}/$vendor" ] || continue
|
|
69
85
|
mkdir -p "vendor/$vendor"
|
|
@@ -27,6 +27,45 @@ PREPARE_STEPS = [
|
|
|
27
27
|
]
|
|
28
28
|
|
|
29
29
|
|
|
30
|
+
# What the list of entries is built again with, between two watches.
|
|
31
|
+
REGENERATE_STEPS = [
|
|
32
|
+
"cache:clear --no-warmup",
|
|
33
|
+
"loader:generate-encore-manifest",
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
# Webpack is told its entries once, when it starts, so a file created while it
|
|
37
|
+
# runs is compiled by nobody and served to no one. The watchdog in the loader's
|
|
38
|
+
# encore config stops the watch on that code and nothing else, and this starts
|
|
39
|
+
# it again with a list built afresh.
|
|
40
|
+
#
|
|
41
|
+
# The loop runs here, on the host, and not in the node container: the list is
|
|
42
|
+
# built by php, which the node image of some apps does not carry, and a loop
|
|
43
|
+
# inside it could only give up there. From here each step goes to the
|
|
44
|
+
# container that can run it — the watch to node, the list to the php one — so
|
|
45
|
+
# every app restarts on its own. Ctrl-C leaves for good, as it should.
|
|
46
|
+
ENTRY_LIST_CHANGED_EXIT_CODE = 75
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def build_watch_loop(node_container: str, php_container: str) -> str:
|
|
50
|
+
import shlex
|
|
51
|
+
|
|
52
|
+
regenerate = " && ".join(
|
|
53
|
+
f"php bin/console {step} >/dev/null" for step in REGENERATE_STEPS
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
return f"""
|
|
57
|
+
trap 'exit 0' INT TERM
|
|
58
|
+
while true; do
|
|
59
|
+
docker exec -ti -w {shlex.quote(APP_DIR)} {shlex.quote(node_container)} yarn watch
|
|
60
|
+
code=$?
|
|
61
|
+
[ "$code" -eq {ENTRY_LIST_CHANGED_EXIT_CODE} ] || exit "$code"
|
|
62
|
+
|
|
63
|
+
echo "[watch] the list of entries changed, building it again"
|
|
64
|
+
docker exec -w {shlex.quote(APP_DIR)} {shlex.quote(php_container)} /bin/sh -c {shlex.quote(regenerate)} || exit $?
|
|
65
|
+
done
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
|
|
30
69
|
@command(
|
|
31
70
|
type=COMMAND_TYPE_SERVICE,
|
|
32
71
|
description="Prepare the front build and start the webpack watcher (local env only)",
|
|
@@ -66,17 +105,20 @@ def symfony__service__watch(
|
|
|
66
105
|
f"No container for the '{NODE_SERVICE}' service — the watcher runs there."
|
|
67
106
|
)
|
|
68
107
|
|
|
108
|
+
php_container = service.addon_manager.get_service_docker_container_name(
|
|
109
|
+
service.name
|
|
110
|
+
)
|
|
111
|
+
if not php_container:
|
|
112
|
+
raise RuntimeError(
|
|
113
|
+
f"No container for the '{service.name}' service — the list of entries is built there."
|
|
114
|
+
)
|
|
115
|
+
|
|
69
116
|
context.io.log("[watch] starting webpack watch…")
|
|
70
117
|
return InteractiveShellCommandResponse(
|
|
71
118
|
kernel=context.kernel,
|
|
72
119
|
content=[
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
|
|
76
|
-
"-w",
|
|
77
|
-
APP_DIR,
|
|
78
|
-
node_container,
|
|
79
|
-
"yarn",
|
|
80
|
-
"watch",
|
|
120
|
+
"/bin/sh",
|
|
121
|
+
"-c",
|
|
122
|
+
build_watch_loop(node_container, php_container),
|
|
81
123
|
],
|
|
82
124
|
)
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import TYPE_CHECKING
|
|
4
|
+
|
|
5
|
+
from wexample_cli.const.tags import AudienceTag, EffectTag, ScopeTag
|
|
6
|
+
from wexample_cli.decorator.command import command
|
|
7
|
+
from wexample_cli.decorator.option import option
|
|
8
|
+
from wexample_wex_core.const.globals import COMMAND_TYPE_SERVICE
|
|
9
|
+
|
|
10
|
+
from wexample_wex_addon_dev_php.const.tags import DomainTag
|
|
11
|
+
from wexample_wex_addon_dev_php.services.composer.commands.service.install_local import (
|
|
12
|
+
APP_DIR,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
if TYPE_CHECKING:
|
|
16
|
+
from wexample_app.response.abstract_response import AbstractResponse
|
|
17
|
+
from wexample_cli.context.execution_context import ExecutionContext
|
|
18
|
+
from wexample_wex_addon_app.service.app_service import AppService
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@option(
|
|
22
|
+
name="force",
|
|
23
|
+
type=bool,
|
|
24
|
+
default=False,
|
|
25
|
+
description="Translate again what an engine already translated; wording written by hand is kept",
|
|
26
|
+
)
|
|
27
|
+
@option(
|
|
28
|
+
name="locale",
|
|
29
|
+
type=str,
|
|
30
|
+
required=False,
|
|
31
|
+
default="",
|
|
32
|
+
description="Space-separated locales to translate into, enabled once done; every enabled locale but the default one if omitted",
|
|
33
|
+
)
|
|
34
|
+
@command(
|
|
35
|
+
type=COMMAND_TYPE_SERVICE,
|
|
36
|
+
description="Translate the interface and the content of a symfony app (wexample/symfony-translations)",
|
|
37
|
+
tags=[
|
|
38
|
+
DomainTag.LANGUAGE_PHP,
|
|
39
|
+
DomainTag.FRAMEWORK,
|
|
40
|
+
EffectTag.WRITE,
|
|
41
|
+
AudienceTag.AGENT_SAFE,
|
|
42
|
+
ScopeTag.APP,
|
|
43
|
+
ScopeTag.CONTAINER,
|
|
44
|
+
],
|
|
45
|
+
)
|
|
46
|
+
def symfony__translations__translate(
|
|
47
|
+
context: ExecutionContext,
|
|
48
|
+
service: AppService,
|
|
49
|
+
force: bool = False,
|
|
50
|
+
locale: str = "",
|
|
51
|
+
) -> AbstractResponse:
|
|
52
|
+
"""The locales are the app's own, read by Symfony from framework.enabled_locales
|
|
53
|
+
and default_locale: nothing to list here. Naming one is how a new locale is
|
|
54
|
+
added, `translate-files` enabling it once its files are written, so the next
|
|
55
|
+
run without any takes it along.
|
|
56
|
+
|
|
57
|
+
The interface first, as the content locales follow the interface ones. The
|
|
58
|
+
bundles are translated too: the app is where their wording is read.
|
|
59
|
+
|
|
60
|
+
Run in the terminal rather than captured: a run sends every text to the
|
|
61
|
+
engine and takes minutes, which a captured output would spend in silence.
|
|
62
|
+
"""
|
|
63
|
+
import sys
|
|
64
|
+
|
|
65
|
+
from wexample_app.response.interactive_shell_command_response import (
|
|
66
|
+
InteractiveShellCommandResponse,
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
container = service.addon_manager.get_service_docker_container_name(
|
|
70
|
+
service.name
|
|
71
|
+
)
|
|
72
|
+
if not container:
|
|
73
|
+
raise RuntimeError(f"No Docker container found for service '{service.name}'")
|
|
74
|
+
|
|
75
|
+
locales = " ".join(locale.split())
|
|
76
|
+
force_flag = " --force" if force else ""
|
|
77
|
+
script = (
|
|
78
|
+
f"cd {APP_DIR}"
|
|
79
|
+
f" && php bin/console translations:translate-files {locales} --include-bundles{force_flag}"
|
|
80
|
+
f" && php bin/console translations:translate-content{force_flag}"
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
# A terminal only when there is one: an agent runs this without.
|
|
84
|
+
tty = ["-ti"] if sys.stdin.isatty() else ["-i"]
|
|
85
|
+
|
|
86
|
+
return InteractiveShellCommandResponse(
|
|
87
|
+
kernel=context.kernel,
|
|
88
|
+
content=["docker", "exec", *tty, container, "/bin/sh", "-c", script],
|
|
89
|
+
)
|
|
File without changes
|
|
File without changes
|
|
@@ -695,7 +695,10 @@ class PhpSymfonyWorkdir(PhpWorkdir):
|
|
|
695
695
|
excluded_segments = frozenset(excluded)
|
|
696
696
|
|
|
697
697
|
children_filter = self._create_php_file_children_filter()
|
|
698
|
-
|
|
698
|
+
base_filter = children_filter.filter
|
|
699
|
+
children_filter.filter = lambda path: base_filter(
|
|
700
|
+
path
|
|
701
|
+
) and excluded_segments.isdisjoint(path.parts)
|
|
699
702
|
|
|
700
703
|
return children_filter
|
|
701
704
|
|
|
@@ -10,6 +10,8 @@ from wexample_wex_addon_ai.workdir.mixin.with_ai_workdir_mixin import (
|
|
|
10
10
|
from wexample_wex_addon_app.workdir.code_base_workdir import CodeBaseWorkdir
|
|
11
11
|
|
|
12
12
|
if TYPE_CHECKING:
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
|
|
13
15
|
from wexample_config.const.types import DictConfig
|
|
14
16
|
from wexample_config.options_provider.abstract_options_provider import (
|
|
15
17
|
AbstractOptionsProvider,
|
|
@@ -55,6 +57,9 @@ class PhpWorkdir(WithAiWorkdirMixin, CodeBaseWorkdir):
|
|
|
55
57
|
|
|
56
58
|
return manifests
|
|
57
59
|
|
|
60
|
+
def get_dev_dependencies_versions(self) -> dict[str, str]:
|
|
61
|
+
return self.get_app_config_file().get_dev_dependencies_versions()
|
|
62
|
+
|
|
58
63
|
def get_main_code_file_extension(self) -> str:
|
|
59
64
|
from wexample_filestate_php.const.php_file import PHP_FILE_EXTENSION
|
|
60
65
|
|
|
@@ -84,6 +89,16 @@ class PhpWorkdir(WithAiWorkdirMixin, CodeBaseWorkdir):
|
|
|
84
89
|
return False
|
|
85
90
|
return any(tests_path.rglob("*Test.php"))
|
|
86
91
|
|
|
92
|
+
def is_dev_code_path(self, path: Path) -> bool:
|
|
93
|
+
# autoload-dev is where composer itself draws the line; tests/ is the
|
|
94
|
+
# convention when a package declares none.
|
|
95
|
+
directories = self.get_app_config_file().get_dev_autoload_directories() or [
|
|
96
|
+
"tests"
|
|
97
|
+
]
|
|
98
|
+
root = self.get_path()
|
|
99
|
+
|
|
100
|
+
return any(path.is_relative_to(root / directory) for directory in directories)
|
|
101
|
+
|
|
87
102
|
def prepare_value(self, raw_value: DictConfig | None = None) -> DictConfig:
|
|
88
103
|
from wexample_filestate.const.disk import DiskItemType
|
|
89
104
|
|
|
@@ -170,6 +185,8 @@ class PhpWorkdir(WithAiWorkdirMixin, CodeBaseWorkdir):
|
|
|
170
185
|
)
|
|
171
186
|
from wexample_filestate_php.file.php_file import PhpFile
|
|
172
187
|
|
|
188
|
+
root = self.get_path()
|
|
189
|
+
|
|
173
190
|
return ChildrenFilterOption(
|
|
174
191
|
pattern={
|
|
175
192
|
"class": PhpFile,
|
|
@@ -178,4 +195,9 @@ class PhpWorkdir(WithAiWorkdirMixin, CodeBaseWorkdir):
|
|
|
178
195
|
},
|
|
179
196
|
name_pattern=r"^.*\.php$",
|
|
180
197
|
recursive=True,
|
|
198
|
+
# Symfony writes its compiled container under var/, test kernels
|
|
199
|
+
# included (tests/Fixtures/App/var/cache): generated code, not ours
|
|
200
|
+
# to format. Read relative to the workdir, which may itself sit
|
|
201
|
+
# under /var.
|
|
202
|
+
filter=lambda path: "var" not in path.relative_to(root).parts,
|
|
181
203
|
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|