wexample-wex-addon-dev-php 8.13.0__tar.gz → 9.0.0__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-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/PKG-INFO +8 -8
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/README.md +4 -4
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/pyproject.toml +4 -4
- {wexample_wex_addon_dev_php-8.13.0/src/wexample_wex_addon_dev_php/services/laravel → wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/composer/commands/service}/__init__.py +0 -0
- wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/composer/commands/service/install_local.py +85 -0
- wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/composer/commands/service/refresh_lock.py +64 -0
- {wexample_wex_addon_dev_php-8.13.0/src/wexample_wex_addon_dev_php/services/laravel/commands/db → wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/laravel}/__init__.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0/src/wexample_wex_addon_dev_php/services/php → wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/laravel/commands/service}/__init__.py +0 -0
- wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/laravel/commands/service/install_local.py +56 -0
- wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/laravel/commands/service/refresh_lock.py +64 -0
- {wexample_wex_addon_dev_php-8.13.0/src/wexample_wex_addon_dev_php/services/phpmyadmin → wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/new_php}/__init__.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0/src/wexample_wex_addon_dev_php/services/phpmyadmin/commands → wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/new_symfony}/__init__.py +0 -0
- wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/symfony/__init__.py +0 -0
- wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/symfony/app_service.py +32 -0
- wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/symfony/commands/__init__.py +0 -0
- wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/symfony/commands/service/__init__.py +0 -0
- wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/symfony/commands/service/deploy.py +54 -0
- wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/symfony/commands/service/install_local.py +53 -0
- wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/symfony/commands/service/refresh_lock.py +70 -0
- wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/wordpress/__init__.py +0 -0
- wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/workdir/__init__.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/workdir/php_workdir.py +33 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/workdir/symfony_workdir.py +2 -10
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/__init__.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/__pycache__/__init__.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/config_value/__init__.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/config_value/php_package_readme_config_value.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/const/__init__.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/const/tags.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/file/__init__.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/file/php_composer_json_file.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/php_addon_manager.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/py.typed +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/resources/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/resources/docker/Dockerfile.roave +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/__init__.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/composer/__init__.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0/src/wexample_wex_addon_dev_php/services/frankenphp → wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/composer/commands}/__init__.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/composer/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/composer/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/composer/service.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0/src/wexample_wex_addon_dev_php/services/laravel/commands → wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/frankenphp}/__init__.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/frankenphp/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/frankenphp/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/caddy/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/caddy/Caddyfile +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/dev/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/dev/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/local/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/local/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/prod/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/prod/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/php/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/php/web.ini +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/frankenphp/service.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/laravel/app_service.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0/src/wexample_wex_addon_dev_php/services/laravel/commands/maintenance → wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/laravel/commands}/__init__.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0/src/wexample_wex_addon_dev_php/services/new_php → wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/laravel/commands/db}/__init__.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/laravel/commands/db/migrate.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0/src/wexample_wex_addon_dev_php/services/new_symfony → wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/laravel/commands/maintenance}/__init__.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/laravel/commands/maintenance/disable.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/laravel/commands/maintenance/enable.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/laravel/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/laravel/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/laravel/samples/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/laravel/samples/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/laravel/samples/env/dev/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/laravel/samples/env/prod/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/laravel/service.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/new_php/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/new_php/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/new_php/samples/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/new_php/samples/caddy/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/new_php/samples/caddy/Caddyfile +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/new_php/samples/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/new_php/samples/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/new_php/samples/env/dev/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/new_php/samples/env/dev/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/new_php/samples/env/local/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/new_php/samples/env/local/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/new_php/samples/env/prod/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/new_php/samples/env/prod/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/new_php/samples/php/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/new_php/samples/php/web.ini +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/new_php/service.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/new_symfony/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/new_symfony/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/new_symfony/service.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0/src/wexample_wex_addon_dev_php/services/phpmyadmin/commands/runtime → wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/php}/__init__.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/php/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/php/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/php/samples/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/php/samples/apache/web.conf +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/php/samples/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/php/samples/env/dev/cron/default.cron +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/php/samples/env/dev/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/php/samples/env/local/cron/default.cron +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/php/samples/env/local/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/php/samples/env/local/php/web.ini +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/php/samples/env/prod/apache/web.conf +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/php/samples/env/prod/cron/default.cron +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/php/samples/env/prod/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/php/samples/index.php +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/php/samples/php/web.ini +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/php/service.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0/src/wexample_wex_addon_dev_php/services/symfony → wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/phpmyadmin}/__init__.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0/src/wexample_wex_addon_dev_php/services/wordpress → wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/phpmyadmin/commands}/__init__.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0/src/wexample_wex_addon_dev_php/workdir → wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/phpmyadmin/commands/runtime}/__init__.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/phpmyadmin/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/phpmyadmin/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/phpmyadmin/env/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/phpmyadmin/env/local/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/phpmyadmin/service.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/symfony/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/symfony/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/apache/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/apache/web.conf +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/env/dev/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/env/local/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/env/local/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/env/prod/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/symfony/service.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/wordpress/commands/__init__.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/wordpress/commands/service/__init__.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/wordpress/commands/url/__init__.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/wordpress/commands/url/replace.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/wordpress/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/wordpress/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/wordpress/samples/.wex.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/wordpress/samples/docker/docker-compose-cli.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/wordpress/samples/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/wordpress/samples/env/dev/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/wordpress/samples/env/local/wp-cli/.gitkeep +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/wordpress/samples/env/prod/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/services/wordpress/service.yml +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/workdir/php_package_workdir.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/workdir/php_packages_suite_workdir.py +0 -0
- {wexample_wex_addon_dev_php-8.13.0 → wexample_wex_addon_dev_php-9.0.0}/src/wexample_wex_addon_dev_php/workdir/php_symfony_workdir.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: wexample-wex-addon-dev-php
|
|
3
|
-
Version:
|
|
3
|
+
Version: 9.0.0
|
|
4
4
|
Summary: Python dev addon for wex
|
|
5
5
|
Author-Email: weeger <contact@wexample.com>
|
|
6
6
|
License: MIT
|
|
@@ -12,9 +12,9 @@ Requires-Python: >=3.10
|
|
|
12
12
|
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
|
-
Requires-Dist: wexample-wex-addon-ai>=12.
|
|
16
|
-
Requires-Dist: wexample-wex-addon-app>=
|
|
17
|
-
Requires-Dist: wexample-wex-addon-dev-javascript>=
|
|
15
|
+
Requires-Dist: wexample-wex-addon-ai>=12.1.0
|
|
16
|
+
Requires-Dist: wexample-wex-addon-app>=29.0.0
|
|
17
|
+
Requires-Dist: wexample-wex-addon-dev-javascript>=8.0.0
|
|
18
18
|
Provides-Extra: dev
|
|
19
19
|
Requires-Dist: pytest; extra == "dev"
|
|
20
20
|
Requires-Dist: pytest-cov; extra == "dev"
|
|
@@ -22,7 +22,7 @@ Description-Content-Type: text/markdown
|
|
|
22
22
|
|
|
23
23
|
# wex_addon_dev_php
|
|
24
24
|
|
|
25
|
-
Version:
|
|
25
|
+
Version: 9.0.0
|
|
26
26
|
|
|
27
27
|
Python dev addon for wex
|
|
28
28
|
|
|
@@ -105,9 +105,9 @@ Visit the [Wexample Suite documentation](https://docs.wexample.com) for the comp
|
|
|
105
105
|
- attrs: >=23.1.0
|
|
106
106
|
- cattrs: >=23.1.0
|
|
107
107
|
- wexample-filestate-php: >=6.4.0
|
|
108
|
-
- wexample-wex-addon-ai: >=12.
|
|
109
|
-
- wexample-wex-addon-app: >=
|
|
110
|
-
- wexample-wex-addon-dev-javascript: >=
|
|
108
|
+
- wexample-wex-addon-ai: >=12.1.0
|
|
109
|
+
- wexample-wex-addon-app: >=29.0.0
|
|
110
|
+
- wexample-wex-addon-dev-javascript: >=8.0.0
|
|
111
111
|
|
|
112
112
|
## Versioning & Compatibility Policy
|
|
113
113
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# wex_addon_dev_php
|
|
2
2
|
|
|
3
|
-
Version:
|
|
3
|
+
Version: 9.0.0
|
|
4
4
|
|
|
5
5
|
Python dev addon for wex
|
|
6
6
|
|
|
@@ -83,9 +83,9 @@ Visit the [Wexample Suite documentation](https://docs.wexample.com) for the comp
|
|
|
83
83
|
- attrs: >=23.1.0
|
|
84
84
|
- cattrs: >=23.1.0
|
|
85
85
|
- wexample-filestate-php: >=6.4.0
|
|
86
|
-
- wexample-wex-addon-ai: >=12.
|
|
87
|
-
- wexample-wex-addon-app: >=
|
|
88
|
-
- wexample-wex-addon-dev-javascript: >=
|
|
86
|
+
- wexample-wex-addon-ai: >=12.1.0
|
|
87
|
+
- wexample-wex-addon-app: >=29.0.0
|
|
88
|
+
- wexample-wex-addon-dev-javascript: >=8.0.0
|
|
89
89
|
|
|
90
90
|
## Versioning & Compatibility Policy
|
|
91
91
|
|
|
@@ -6,7 +6,7 @@ build-backend = "pdm.backend"
|
|
|
6
6
|
|
|
7
7
|
[project]
|
|
8
8
|
name = "wexample-wex-addon-dev-php"
|
|
9
|
-
version = "
|
|
9
|
+
version = "9.0.0"
|
|
10
10
|
description = "Python dev addon for wex"
|
|
11
11
|
authors = [
|
|
12
12
|
{ name = "weeger", email = "contact@wexample.com" },
|
|
@@ -21,9 +21,9 @@ dependencies = [
|
|
|
21
21
|
"attrs>=23.1.0",
|
|
22
22
|
"cattrs>=23.1.0",
|
|
23
23
|
"wexample-filestate-php>=6.4.0",
|
|
24
|
-
"wexample-wex-addon-ai>=12.
|
|
25
|
-
"wexample-wex-addon-app>=
|
|
26
|
-
"wexample-wex-addon-dev-javascript>=
|
|
24
|
+
"wexample-wex-addon-ai>=12.1.0",
|
|
25
|
+
"wexample-wex-addon-app>=29.0.0",
|
|
26
|
+
"wexample-wex-addon-dev-javascript>=8.0.0",
|
|
27
27
|
]
|
|
28
28
|
|
|
29
29
|
[project.readme]
|
|
File without changes
|
|
@@ -0,0 +1,85 @@
|
|
|
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_wex_core.const.globals import COMMAND_TYPE_SERVICE
|
|
8
|
+
|
|
9
|
+
from wexample_wex_addon_dev_php.const.tags import DomainTag
|
|
10
|
+
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
from wexample_cli.context.execution_context import ExecutionContext
|
|
13
|
+
from wexample_wex_addon_app.service.app_service import AppService
|
|
14
|
+
|
|
15
|
+
# In-container layout convention shared by the local dev composes: the app is
|
|
16
|
+
# served from APP_DIR and each locally-developed vendor suite is mounted under
|
|
17
|
+
# VENDOR_DEV_DIR/<vendor> (see the `local_packages` env config section).
|
|
18
|
+
APP_DIR = "/var/www/html"
|
|
19
|
+
VENDOR_DEV_DIR = "/var/www/vendor-dev"
|
|
20
|
+
|
|
21
|
+
# Dev images are expected to ship a working composer on PATH (official
|
|
22
|
+
# installer against the runtime php). Images with a broken wrapper (e.g. a
|
|
23
|
+
# /usr/bin/composer pinned to an older php) pass their own composer_bin.
|
|
24
|
+
COMPOSER_BIN = "composer"
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@command(
|
|
28
|
+
type=COMMAND_TYPE_SERVICE,
|
|
29
|
+
description="Wire locally-developed composer packages into vendor/ (local env only)",
|
|
30
|
+
tags=[
|
|
31
|
+
DomainTag.LANGUAGE_PHP,
|
|
32
|
+
EffectTag.WRITE,
|
|
33
|
+
AudienceTag.AGENT_SAFE,
|
|
34
|
+
ScopeTag.APP,
|
|
35
|
+
ScopeTag.CONTAINER,
|
|
36
|
+
ScopeTag.LOCAL,
|
|
37
|
+
],
|
|
38
|
+
)
|
|
39
|
+
def composer__service__install_local(
|
|
40
|
+
context: ExecutionContext,
|
|
41
|
+
service: AppService,
|
|
42
|
+
composer_bin: str = COMPOSER_BIN,
|
|
43
|
+
) -> None:
|
|
44
|
+
"""Generic composer wiring, reusable by any PHP runtime service.
|
|
45
|
+
|
|
46
|
+
Delegating services (laravel, symfony…) call this with their own
|
|
47
|
+
``service`` so the work runs inside their container, then append their
|
|
48
|
+
framework-specific steps (cache clears…).
|
|
49
|
+
"""
|
|
50
|
+
php_packages = service.app_workdir.get_runtime_config().search(
|
|
51
|
+
"local_packages.php"
|
|
52
|
+
)
|
|
53
|
+
if php_packages.is_none():
|
|
54
|
+
context.io.log("No local_packages.php configured, nothing to wire.")
|
|
55
|
+
return
|
|
56
|
+
|
|
57
|
+
vendors = " ".join(sorted(php_packages.to_dict().keys()))
|
|
58
|
+
|
|
59
|
+
# Composer keeps the (possibly stale) registry version of a package even
|
|
60
|
+
# when a newer local source exists, so the deterministic wiring is a
|
|
61
|
+
# forced symlink over vendor/ — every local package of each declared
|
|
62
|
+
# vendor, installed or not.
|
|
63
|
+
script = f"""
|
|
64
|
+
set -e
|
|
65
|
+
cd {APP_DIR}
|
|
66
|
+
{composer_bin} install --no-scripts
|
|
67
|
+
for vendor in {vendors}; do
|
|
68
|
+
[ -d "{VENDOR_DEV_DIR}/$vendor" ] || continue
|
|
69
|
+
mkdir -p "vendor/$vendor"
|
|
70
|
+
for src in {VENDOR_DEV_DIR}/$vendor/*/; do
|
|
71
|
+
pkg=$(basename "$src")
|
|
72
|
+
[ -f "$src/composer.json" ] || continue
|
|
73
|
+
rm -rf "vendor/$vendor/$pkg"
|
|
74
|
+
ln -s "${{src%/}}" "vendor/$vendor/$pkg"
|
|
75
|
+
echo " symlinked $vendor/$pkg"
|
|
76
|
+
done
|
|
77
|
+
done
|
|
78
|
+
{composer_bin} dump-autoload
|
|
79
|
+
"""
|
|
80
|
+
|
|
81
|
+
context.io.log(f"Wiring local composer packages ({vendors}) into vendor/…")
|
|
82
|
+
output = service.addon_manager.docker_exec(
|
|
83
|
+
service.name, ["/bin/sh", "-c", script]
|
|
84
|
+
)
|
|
85
|
+
context.io.log(output)
|
|
@@ -0,0 +1,64 @@
|
|
|
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
|
+
COMPOSER_BIN,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
if TYPE_CHECKING:
|
|
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="composer_packages",
|
|
23
|
+
type=str,
|
|
24
|
+
required=True,
|
|
25
|
+
description="Space-separated composer package names whose constraint changed in composer.json",
|
|
26
|
+
)
|
|
27
|
+
@command(
|
|
28
|
+
type=COMMAND_TYPE_SERVICE,
|
|
29
|
+
description="Refresh composer.lock after a composer.json dependency change",
|
|
30
|
+
tags=[
|
|
31
|
+
DomainTag.LANGUAGE_PHP,
|
|
32
|
+
EffectTag.WRITE,
|
|
33
|
+
AudienceTag.AGENT_SAFE,
|
|
34
|
+
ScopeTag.APP,
|
|
35
|
+
ScopeTag.CONTAINER,
|
|
36
|
+
ScopeTag.LOCAL,
|
|
37
|
+
],
|
|
38
|
+
)
|
|
39
|
+
def composer__service__refresh_lock(
|
|
40
|
+
context: ExecutionContext,
|
|
41
|
+
service: AppService,
|
|
42
|
+
composer_packages: str,
|
|
43
|
+
composer_bin: str = COMPOSER_BIN,
|
|
44
|
+
) -> None:
|
|
45
|
+
"""Generic composer lock refresh, reusable by any PHP runtime service.
|
|
46
|
+
|
|
47
|
+
Delegating services (laravel, symfony…) call this with their own
|
|
48
|
+
``service`` so the work runs inside their container.
|
|
49
|
+
"""
|
|
50
|
+
# --no-install rewrites composer.lock only: vendor/ may hold local
|
|
51
|
+
# development symlinks that a real install would overwrite.
|
|
52
|
+
# --with-all-dependencies lets the updated packages' own (locked)
|
|
53
|
+
# dependencies move too, or sibling library bumps would dead-lock the
|
|
54
|
+
# partial update.
|
|
55
|
+
output = service.addon_manager.docker_exec(
|
|
56
|
+
service.name,
|
|
57
|
+
[
|
|
58
|
+
"/bin/sh",
|
|
59
|
+
"-c",
|
|
60
|
+
f"cd {APP_DIR} && {composer_bin} update --no-install"
|
|
61
|
+
f" --with-all-dependencies {composer_packages}",
|
|
62
|
+
],
|
|
63
|
+
)
|
|
64
|
+
context.io.log(output)
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,56 @@
|
|
|
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_wex_core.const.globals import COMMAND_TYPE_SERVICE
|
|
8
|
+
|
|
9
|
+
from wexample_wex_addon_dev_php.const.tags import DomainTag
|
|
10
|
+
from wexample_wex_addon_dev_php.services.composer.commands.service.install_local import (
|
|
11
|
+
APP_DIR,
|
|
12
|
+
composer__service__install_local,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
if TYPE_CHECKING:
|
|
16
|
+
from wexample_cli.context.execution_context import ExecutionContext
|
|
17
|
+
from wexample_wex_addon_app.service.app_service import AppService
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@command(
|
|
21
|
+
type=COMMAND_TYPE_SERVICE,
|
|
22
|
+
description="Wire locally-developed composer packages into vendor/ (local env only)",
|
|
23
|
+
tags=[
|
|
24
|
+
DomainTag.LANGUAGE_PHP,
|
|
25
|
+
DomainTag.FRAMEWORK,
|
|
26
|
+
EffectTag.WRITE,
|
|
27
|
+
AudienceTag.AGENT_SAFE,
|
|
28
|
+
ScopeTag.APP,
|
|
29
|
+
ScopeTag.CONTAINER,
|
|
30
|
+
ScopeTag.LOCAL,
|
|
31
|
+
],
|
|
32
|
+
)
|
|
33
|
+
def laravel__service__install_local(
|
|
34
|
+
context: ExecutionContext,
|
|
35
|
+
service: AppService,
|
|
36
|
+
) -> None:
|
|
37
|
+
# Laravel caches its package manifest: a provider removed by the composer
|
|
38
|
+
# pass would keep crashing artisan from the stale cache, so purge first.
|
|
39
|
+
service.addon_manager.docker_exec(
|
|
40
|
+
service.name,
|
|
41
|
+
[
|
|
42
|
+
"/bin/sh",
|
|
43
|
+
"-c",
|
|
44
|
+
f"rm -f {APP_DIR}/bootstrap/cache/packages.php"
|
|
45
|
+
f" {APP_DIR}/bootstrap/cache/services.php",
|
|
46
|
+
],
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
# Generic composer wiring, executed in this service's container.
|
|
50
|
+
composer__service__install_local.function(context=context, service=service)
|
|
51
|
+
|
|
52
|
+
output = service.addon_manager.docker_exec(
|
|
53
|
+
service.name,
|
|
54
|
+
["/bin/sh", "-c", f"cd {APP_DIR} && php artisan optimize:clear"],
|
|
55
|
+
)
|
|
56
|
+
context.io.log(output)
|
|
@@ -0,0 +1,64 @@
|
|
|
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_addon_dev_javascript.services.node.commands.service.refresh_lock import (
|
|
9
|
+
node__service__refresh_lock,
|
|
10
|
+
)
|
|
11
|
+
from wexample_wex_core.const.globals import COMMAND_TYPE_SERVICE
|
|
12
|
+
|
|
13
|
+
from wexample_wex_addon_dev_php.const.tags import DomainTag
|
|
14
|
+
from wexample_wex_addon_dev_php.services.composer.commands.service.refresh_lock import (
|
|
15
|
+
composer__service__refresh_lock,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
if TYPE_CHECKING:
|
|
19
|
+
from wexample_cli.context.execution_context import ExecutionContext
|
|
20
|
+
from wexample_wex_addon_app.service.app_service import AppService
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@option(
|
|
24
|
+
name="composer_packages",
|
|
25
|
+
type=str,
|
|
26
|
+
required=False,
|
|
27
|
+
default="",
|
|
28
|
+
description="Space-separated composer package names whose constraint changed in composer.json",
|
|
29
|
+
)
|
|
30
|
+
@option(
|
|
31
|
+
name="npm_packages",
|
|
32
|
+
type=str,
|
|
33
|
+
required=False,
|
|
34
|
+
default="",
|
|
35
|
+
description="Space-separated npm package names whose constraint changed in package.json",
|
|
36
|
+
)
|
|
37
|
+
@command(
|
|
38
|
+
type=COMMAND_TYPE_SERVICE,
|
|
39
|
+
description="Refresh composer and javascript lock files after a dependency change",
|
|
40
|
+
tags=[
|
|
41
|
+
DomainTag.LANGUAGE_PHP,
|
|
42
|
+
DomainTag.FRAMEWORK,
|
|
43
|
+
EffectTag.WRITE,
|
|
44
|
+
AudienceTag.AGENT_SAFE,
|
|
45
|
+
ScopeTag.APP,
|
|
46
|
+
ScopeTag.CONTAINER,
|
|
47
|
+
ScopeTag.LOCAL,
|
|
48
|
+
],
|
|
49
|
+
)
|
|
50
|
+
def laravel__service__refresh_lock(
|
|
51
|
+
context: ExecutionContext,
|
|
52
|
+
service: AppService,
|
|
53
|
+
composer_packages: str = "",
|
|
54
|
+
npm_packages: str = "",
|
|
55
|
+
) -> None:
|
|
56
|
+
# Generic lock refreshes, executed in this service's container.
|
|
57
|
+
if composer_packages:
|
|
58
|
+
composer__service__refresh_lock.function(
|
|
59
|
+
context=context, service=service, composer_packages=composer_packages
|
|
60
|
+
)
|
|
61
|
+
if npm_packages:
|
|
62
|
+
node__service__refresh_lock.function(
|
|
63
|
+
context=context, service=service, npm_packages=npm_packages
|
|
64
|
+
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/symfony/app_service.py
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from wexample_filestate.const.disk import DiskItemType
|
|
4
|
+
from wexample_wex_addon_app.service.app_service import AppService as BaseAppService
|
|
5
|
+
|
|
6
|
+
_D = DiskItemType.DIRECTORY
|
|
7
|
+
|
|
8
|
+
# php-fpm in the Alpine-based images runs as www-data uid 82, NOT the Debian
|
|
9
|
+
# 33. Symfony must be able to write its runtime dirs as that user. Declared
|
|
10
|
+
# here so rectify keeps them owned by 82 and stops them from flipping back to
|
|
11
|
+
# the host uid (e.g. after own/this, a git checkout or a fresh image deploy),
|
|
12
|
+
# which surfaces as a 500 with nothing written to var/log.
|
|
13
|
+
_SYMFONY_WEB_OWNER = "82:82"
|
|
14
|
+
|
|
15
|
+
_WORKDIR_CONTRIBUTION: dict = {
|
|
16
|
+
"children": [
|
|
17
|
+
{
|
|
18
|
+
"name": "var",
|
|
19
|
+
"type": _D,
|
|
20
|
+
"should_exist": True,
|
|
21
|
+
"mode": {
|
|
22
|
+
"owner": _SYMFONY_WEB_OWNER,
|
|
23
|
+
"recursive": True,
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class AppService(BaseAppService):
|
|
31
|
+
def get_workdir_contribution(self, workdir) -> dict:
|
|
32
|
+
return _WORKDIR_CONTRIBUTION
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,54 @@
|
|
|
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_wex_core.const.globals import COMMAND_TYPE_SERVICE
|
|
8
|
+
|
|
9
|
+
from wexample_wex_addon_dev_php.const.tags import DomainTag
|
|
10
|
+
from wexample_wex_addon_dev_php.services.composer.commands.service.install_local import (
|
|
11
|
+
APP_DIR,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from wexample_cli.context.execution_context import ExecutionContext
|
|
16
|
+
from wexample_wex_addon_app.service.app_service import AppService
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@command(
|
|
20
|
+
type=COMMAND_TYPE_SERVICE,
|
|
21
|
+
description="Post-deployment tasks for a symfony app (doctrine migrations)",
|
|
22
|
+
tags=[
|
|
23
|
+
DomainTag.LANGUAGE_PHP,
|
|
24
|
+
DomainTag.FRAMEWORK,
|
|
25
|
+
EffectTag.WRITE,
|
|
26
|
+
AudienceTag.AGENT_SAFE,
|
|
27
|
+
ScopeTag.APP,
|
|
28
|
+
ScopeTag.CONTAINER,
|
|
29
|
+
],
|
|
30
|
+
)
|
|
31
|
+
def symfony__service__deploy(
|
|
32
|
+
context: ExecutionContext,
|
|
33
|
+
service: AppService,
|
|
34
|
+
) -> None:
|
|
35
|
+
"""Run once by `.release/deploy` after the app restarted on new images.
|
|
36
|
+
|
|
37
|
+
Idempotent: applies pending doctrine migrations only. --no-interaction is
|
|
38
|
+
vital — the deploy webhook has no TTY, doctrine's data-loss prompt would
|
|
39
|
+
silently abort the migration (which is how unapplied migrations reached
|
|
40
|
+
prod). Apps without a migrations/ directory are skipped.
|
|
41
|
+
"""
|
|
42
|
+
script = f"""
|
|
43
|
+
set -e
|
|
44
|
+
cd {APP_DIR}
|
|
45
|
+
if [ -d migrations ]; then
|
|
46
|
+
bin/console doctrine:migrations:migrate --no-interaction --allow-no-migration
|
|
47
|
+
else
|
|
48
|
+
echo "No migrations/ directory, skipping."
|
|
49
|
+
fi
|
|
50
|
+
"""
|
|
51
|
+
output = service.addon_manager.docker_exec(
|
|
52
|
+
service.name, ["/bin/sh", "-c", script]
|
|
53
|
+
)
|
|
54
|
+
context.io.log(output)
|
|
@@ -0,0 +1,53 @@
|
|
|
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_wex_addon_dev_javascript.services.node.commands.service.install_local import (
|
|
8
|
+
node__service__install_local,
|
|
9
|
+
)
|
|
10
|
+
from wexample_wex_core.const.globals import COMMAND_TYPE_SERVICE
|
|
11
|
+
|
|
12
|
+
from wexample_wex_addon_dev_php.const.tags import DomainTag
|
|
13
|
+
from wexample_wex_addon_dev_php.services.composer.commands.service.install_local import (
|
|
14
|
+
APP_DIR,
|
|
15
|
+
composer__service__install_local,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
if TYPE_CHECKING:
|
|
19
|
+
from wexample_cli.context.execution_context import ExecutionContext
|
|
20
|
+
from wexample_wex_addon_app.service.app_service import AppService
|
|
21
|
+
|
|
22
|
+
# Symfony images ship a sane composer on PATH (no php-pinned phar wrapper).
|
|
23
|
+
COMPOSER_BIN = "composer"
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@command(
|
|
27
|
+
type=COMMAND_TYPE_SERVICE,
|
|
28
|
+
description="Wire locally-developed composer and npm packages into the app (local env only)",
|
|
29
|
+
tags=[
|
|
30
|
+
DomainTag.LANGUAGE_PHP,
|
|
31
|
+
DomainTag.FRAMEWORK,
|
|
32
|
+
EffectTag.WRITE,
|
|
33
|
+
AudienceTag.AGENT_SAFE,
|
|
34
|
+
ScopeTag.APP,
|
|
35
|
+
ScopeTag.CONTAINER,
|
|
36
|
+
ScopeTag.LOCAL,
|
|
37
|
+
],
|
|
38
|
+
)
|
|
39
|
+
def symfony__service__install_local(
|
|
40
|
+
context: ExecutionContext,
|
|
41
|
+
service: AppService,
|
|
42
|
+
) -> None:
|
|
43
|
+
# Generic composer and node wiring, executed in this service's container.
|
|
44
|
+
composer__service__install_local.function(
|
|
45
|
+
context=context, service=service, composer_bin=COMPOSER_BIN
|
|
46
|
+
)
|
|
47
|
+
node__service__install_local.function(context=context, service=service)
|
|
48
|
+
|
|
49
|
+
output = service.addon_manager.docker_exec(
|
|
50
|
+
service.name,
|
|
51
|
+
["/bin/sh", "-c", f"cd {APP_DIR} && bin/console cache:clear"],
|
|
52
|
+
)
|
|
53
|
+
context.io.log(output)
|
|
@@ -0,0 +1,70 @@
|
|
|
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_addon_dev_javascript.services.node.commands.service.refresh_lock import (
|
|
9
|
+
node__service__refresh_lock,
|
|
10
|
+
)
|
|
11
|
+
from wexample_wex_core.const.globals import COMMAND_TYPE_SERVICE
|
|
12
|
+
|
|
13
|
+
from wexample_wex_addon_dev_php.const.tags import DomainTag
|
|
14
|
+
from wexample_wex_addon_dev_php.services.composer.commands.service.refresh_lock import (
|
|
15
|
+
composer__service__refresh_lock,
|
|
16
|
+
)
|
|
17
|
+
from wexample_wex_addon_dev_php.services.symfony.commands.service.install_local import (
|
|
18
|
+
COMPOSER_BIN,
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
if TYPE_CHECKING:
|
|
22
|
+
from wexample_cli.context.execution_context import ExecutionContext
|
|
23
|
+
from wexample_wex_addon_app.service.app_service import AppService
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@option(
|
|
27
|
+
name="composer_packages",
|
|
28
|
+
type=str,
|
|
29
|
+
required=False,
|
|
30
|
+
default="",
|
|
31
|
+
description="Space-separated composer package names whose constraint changed in composer.json",
|
|
32
|
+
)
|
|
33
|
+
@option(
|
|
34
|
+
name="npm_packages",
|
|
35
|
+
type=str,
|
|
36
|
+
required=False,
|
|
37
|
+
default="",
|
|
38
|
+
description="Space-separated npm package names whose constraint changed in package.json",
|
|
39
|
+
)
|
|
40
|
+
@command(
|
|
41
|
+
type=COMMAND_TYPE_SERVICE,
|
|
42
|
+
description="Refresh composer and javascript lock files after a dependency change",
|
|
43
|
+
tags=[
|
|
44
|
+
DomainTag.LANGUAGE_PHP,
|
|
45
|
+
DomainTag.FRAMEWORK,
|
|
46
|
+
EffectTag.WRITE,
|
|
47
|
+
AudienceTag.AGENT_SAFE,
|
|
48
|
+
ScopeTag.APP,
|
|
49
|
+
ScopeTag.CONTAINER,
|
|
50
|
+
ScopeTag.LOCAL,
|
|
51
|
+
],
|
|
52
|
+
)
|
|
53
|
+
def symfony__service__refresh_lock(
|
|
54
|
+
context: ExecutionContext,
|
|
55
|
+
service: AppService,
|
|
56
|
+
composer_packages: str = "",
|
|
57
|
+
npm_packages: str = "",
|
|
58
|
+
) -> None:
|
|
59
|
+
# Generic lock refreshes, executed in this service's container.
|
|
60
|
+
if composer_packages:
|
|
61
|
+
composer__service__refresh_lock.function(
|
|
62
|
+
context=context,
|
|
63
|
+
service=service,
|
|
64
|
+
composer_packages=composer_packages,
|
|
65
|
+
composer_bin=COMPOSER_BIN,
|
|
66
|
+
)
|
|
67
|
+
if npm_packages:
|
|
68
|
+
node__service__refresh_lock.function(
|
|
69
|
+
context=context, service=service, npm_packages=npm_packages
|
|
70
|
+
)
|
wexample_wex_addon_dev_php-9.0.0/src/wexample_wex_addon_dev_php/services/wordpress/__init__.py
ADDED
|
File without changes
|
|
File without changes
|
|
@@ -38,6 +38,23 @@ class PhpWorkdir(WithAiWorkdirMixin, CodeBaseWorkdir):
|
|
|
38
38
|
def get_dependencies_versions(self) -> dict[str, str]:
|
|
39
39
|
return self.get_app_config_file().get_dependencies_versions()
|
|
40
40
|
|
|
41
|
+
def get_dependency_manifests(self) -> list:
|
|
42
|
+
from wexample_wex_addon_dev_javascript.file.node_package_json_file import (
|
|
43
|
+
NodePackageJsonFile,
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
manifests = super().get_dependency_manifests()
|
|
47
|
+
|
|
48
|
+
# PHP apps are frequently polyglot (Symfony/Laravel assets built with
|
|
49
|
+
# node): their package.json must follow library syncs like
|
|
50
|
+
# composer.json does.
|
|
51
|
+
package_json = self.find_by_type(NodePackageJsonFile)
|
|
52
|
+
if package_json is not None and package_json.get_path().exists():
|
|
53
|
+
package_json.read_text(reload=True)
|
|
54
|
+
manifests.append(package_json)
|
|
55
|
+
|
|
56
|
+
return manifests
|
|
57
|
+
|
|
41
58
|
def get_main_code_file_extension(self) -> str:
|
|
42
59
|
from wexample_filestate_php.const.php_file import PHP_FILE_EXTENSION
|
|
43
60
|
|
|
@@ -90,6 +107,22 @@ class PhpWorkdir(WithAiWorkdirMixin, CodeBaseWorkdir):
|
|
|
90
107
|
}
|
|
91
108
|
)
|
|
92
109
|
|
|
110
|
+
# Polyglot apps: expose the package.json as a dependency manifest
|
|
111
|
+
# (see get_dependency_manifests). No should_exist: never created when
|
|
112
|
+
# absent — the workdir path is not resolved yet at this stage, so the
|
|
113
|
+
# disk check happens in get_dependency_manifests.
|
|
114
|
+
from wexample_wex_addon_dev_javascript.file.node_package_json_file import (
|
|
115
|
+
NodePackageJsonFile,
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
children.append(
|
|
119
|
+
{
|
|
120
|
+
"class": NodePackageJsonFile,
|
|
121
|
+
"name": "package.json",
|
|
122
|
+
"type": DiskItemType.FILE,
|
|
123
|
+
}
|
|
124
|
+
)
|
|
125
|
+
|
|
93
126
|
self.add_gitignore_rules(
|
|
94
127
|
children,
|
|
95
128
|
".php-cs-fixer.cache",
|
|
@@ -23,13 +23,5 @@ class SymfonyWorkdir(PhpWorkdir):
|
|
|
23
23
|
|
|
24
24
|
return workdir_javascript.apply(result=result, **kwargs)
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
self.log("Syncing Javascript...")
|
|
30
|
-
|
|
31
|
-
workdir_javascript = JavascriptWorkdir.create_from_path(
|
|
32
|
-
path=self.get_path(), io=self.io
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
workdir_javascript.libraries_sync()
|
|
26
|
+
# NOTE: package.json library syncing is handled natively by PhpWorkdir's
|
|
27
|
+
# dependency manifests (get_dependency_manifests), no facade needed here.
|
|
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
|