wexample-wex-addon-dev-php 12.6.0__tar.gz → 12.7.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.
Files changed (151) hide show
  1. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/PKG-INFO +14 -14
  2. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/README.md +8 -8
  3. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/pyproject.toml +6 -6
  4. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/resources/docker/Dockerfile.roave +7 -2
  5. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/composer/docker/docker-compose.yml +5 -1
  6. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/frankenphp/docker/docker-compose.yml +1 -1
  7. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/php/docker/docker-compose.yml +1 -1
  8. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/docker/images/Dockerfile.dev +2 -2
  9. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/docker/images/Dockerfile.release +6 -6
  10. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/workdir/php_package_workdir.py +13 -3
  11. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/workdir/php_symfony_workdir.py +26 -0
  12. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/__init__.py +0 -0
  13. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/__pycache__/__init__.py +0 -0
  14. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/config_value/__init__.py +0 -0
  15. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/config_value/php_package_readme_config_value.py +0 -0
  16. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/const/__init__.py +0 -0
  17. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/const/tags.py +0 -0
  18. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/deployment/__init__.py +0 -0
  19. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/deployment/step/__init__.py +0 -0
  20. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/deployment/step/symfony_env_local_deployment_step.py +0 -0
  21. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/file/__init__.py +0 -0
  22. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/file/php_composer_json_file.py +0 -0
  23. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/formatter/__init__.py +0 -0
  24. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/formatter/php_code_formatter.py +0 -0
  25. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/php_addon_manager.py +0 -0
  26. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/py.typed +0 -0
  27. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/resources/.wex.yml +0 -0
  28. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/resources/design_rules/php_code.md +0 -0
  29. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/resources/writing_rules/php_code.md +0 -0
  30. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/__init__.py +0 -0
  31. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/composer/__init__.py +0 -0
  32. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/composer/commands/__init__.py +0 -0
  33. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/composer/commands/service/__init__.py +0 -0
  34. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/composer/commands/service/install_local.py +0 -0
  35. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/composer/commands/service/refresh_lock.py +0 -0
  36. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/composer/docker/.wex.yml +0 -0
  37. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/composer/service.yml +0 -0
  38. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/frankenphp/__init__.py +0 -0
  39. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/frankenphp/docker/.wex.yml +0 -0
  40. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/.wex.yml +0 -0
  41. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/caddy/.wex.yml +0 -0
  42. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/caddy/Caddyfile +0 -0
  43. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/docker/.wex.yml +0 -0
  44. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/docker/docker-compose.yml +0 -0
  45. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/dev/docker/.wex.yml +0 -0
  46. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/dev/docker/docker-compose.yml +0 -0
  47. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/local/docker/.wex.yml +0 -0
  48. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/local/docker/docker-compose.yml +0 -0
  49. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/prod/docker/.wex.yml +0 -0
  50. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/prod/docker/docker-compose.yml +0 -0
  51. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/php/.wex.yml +0 -0
  52. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/php/web.ini +0 -0
  53. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/frankenphp/service.yml +0 -0
  54. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/laravel/__init__.py +0 -0
  55. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/laravel/app_service.py +0 -0
  56. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/laravel/commands/__init__.py +0 -0
  57. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/laravel/commands/db/__init__.py +0 -0
  58. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/laravel/commands/db/migrate.yml +0 -0
  59. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/laravel/commands/maintenance/__init__.py +0 -0
  60. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/laravel/commands/maintenance/disable.yml +0 -0
  61. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/laravel/commands/maintenance/enable.yml +0 -0
  62. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/laravel/commands/service/__init__.py +0 -0
  63. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/laravel/commands/service/install_local.py +0 -0
  64. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/laravel/commands/service/refresh_lock.py +0 -0
  65. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/laravel/docker/.wex.yml +0 -0
  66. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/laravel/docker/docker-compose.yml +0 -0
  67. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/laravel/samples/.wex.yml +0 -0
  68. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/laravel/samples/docker/docker-compose.yml +0 -0
  69. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/laravel/samples/env/dev/docker/docker-compose.yml +0 -0
  70. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/laravel/samples/env/prod/docker/docker-compose.yml +0 -0
  71. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/laravel/service.yml +0 -0
  72. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/php/__init__.py +0 -0
  73. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/php/ai/__init__.py +0 -0
  74. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/php/ai/shared/__init__.py +0 -0
  75. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/php/ai/shared/context.j2 +0 -0
  76. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/php/ai/shared/php.j2 +0 -0
  77. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/php/docker/.wex.yml +0 -0
  78. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/php/samples/.wex.yml +0 -0
  79. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/php/samples/caddy/.wex.yml +0 -0
  80. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/php/samples/caddy/Caddyfile +0 -0
  81. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/php/samples/docker/.wex.yml +0 -0
  82. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/php/samples/docker/docker-compose.yml +0 -0
  83. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/php/samples/env/dev/docker/.wex.yml +0 -0
  84. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/php/samples/env/dev/docker/docker-compose.yml +0 -0
  85. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/php/samples/env/local/docker/.wex.yml +0 -0
  86. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/php/samples/env/local/docker/docker-compose.yml +0 -0
  87. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/php/samples/env/prod/docker/.wex.yml +0 -0
  88. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/php/samples/env/prod/docker/docker-compose.yml +0 -0
  89. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/php/samples/php/.wex.yml +0 -0
  90. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/php/samples/php/web.ini +0 -0
  91. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/php/service.yml +0 -0
  92. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/phpmyadmin/__init__.py +0 -0
  93. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/phpmyadmin/commands/__init__.py +0 -0
  94. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/phpmyadmin/commands/runtime/__init__.py +0 -0
  95. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/phpmyadmin/docker/.wex.yml +0 -0
  96. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/phpmyadmin/docker/docker-compose.yml +0 -0
  97. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/phpmyadmin/env/.wex.yml +0 -0
  98. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/phpmyadmin/env/local/docker/docker-compose.yml +0 -0
  99. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/phpmyadmin/service.yml +0 -0
  100. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/__init__.py +0 -0
  101. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/ai/__init__.py +0 -0
  102. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/ai/agents/__init__.py +0 -0
  103. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/ai/agents/editor/__init__.py +0 -0
  104. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/ai/agents/editor/agent.yml +0 -0
  105. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/ai/agents/editor/context.j2 +0 -0
  106. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/ai/shared/__init__.py +0 -0
  107. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/ai/shared/context.j2 +0 -0
  108. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/app_service.py +0 -0
  109. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/commands/__init__.py +0 -0
  110. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/commands/service/__init__.py +0 -0
  111. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/commands/service/deploy.py +0 -0
  112. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/commands/service/install_local.py +0 -0
  113. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/commands/service/watch.py +0 -0
  114. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/commands/translations/__init__.py +0 -0
  115. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/commands/translations/translate.py +0 -0
  116. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/docker/.wex.yml +0 -0
  117. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/docker/docker-compose.yml +0 -0
  118. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/knowledge/__init__.py +0 -0
  119. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/knowledge/entity.md +0 -0
  120. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/.wex.yml +0 -0
  121. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/docker/.wex.yml +0 -0
  122. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/docker/docker-compose.yml +0 -0
  123. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/docker/env.build +0 -0
  124. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/docker/images/.wex.yml +0 -0
  125. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/env/dev/docker/.wex.yml +0 -0
  126. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/env/dev/docker/docker-compose.yml +0 -0
  127. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/env/local/docker/.wex.yml +0 -0
  128. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/env/local/docker/docker-compose.yml +0 -0
  129. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/env/prod/docker/.wex.yml +0 -0
  130. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/env/prod/docker/docker-compose.yml +0 -0
  131. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/symfony/service.yml +0 -0
  132. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/wordpress/__init__.py +0 -0
  133. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/wordpress/commands/__init__.py +0 -0
  134. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/wordpress/commands/service/__init__.py +0 -0
  135. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/wordpress/commands/url/__init__.py +0 -0
  136. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/wordpress/commands/url/replace.py +0 -0
  137. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/wordpress/docker/.wex.yml +0 -0
  138. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/wordpress/docker/docker-compose.yml +0 -0
  139. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/wordpress/samples/.wex.yml +0 -0
  140. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/wordpress/samples/docker/docker-compose-cli.yml +0 -0
  141. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/wordpress/samples/docker/docker-compose.yml +0 -0
  142. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/wordpress/samples/env/dev/docker/docker-compose.yml +0 -0
  143. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/wordpress/samples/env/local/wp-cli/.gitkeep +0 -0
  144. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/wordpress/samples/env/prod/docker/docker-compose.yml +0 -0
  145. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/services/wordpress/service.yml +0 -0
  146. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/workdir/__init__.py +0 -0
  147. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/workdir/php_packages_suite_workdir.py +0 -0
  148. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/src/wexample_wex_addon_dev_php/workdir/php_workdir.py +0 -0
  149. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/tests/.gitkeep +0 -0
  150. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/tests/workdir/__init__.py +0 -0
  151. {wexample_wex_addon_dev_php-12.6.0 → wexample_wex_addon_dev_php-12.7.0}/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.6.0
3
+ Version: 12.7.0
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
@@ -11,11 +11,11 @@ Project-URL: homepage, https://github.com/wexample/python-wex-dev-python
11
11
  Requires-Python: >=3.10
12
12
  Requires-Dist: attrs>=23.1.0
13
13
  Requires-Dist: cattrs>=23.1.0
14
- Requires-Dist: wexample-filestate-php>=6.4.0
15
- Requires-Dist: wexample-filestate-symfony>=2.0.0
16
- Requires-Dist: wexample-wex-addon-ai>=17.0.0
17
- Requires-Dist: wexample-wex-addon-app>=32.4.0
18
- Requires-Dist: wexample-wex-addon-dev-javascript>=8.2.0
14
+ Requires-Dist: wexample-filestate-php>=6.5.0
15
+ Requires-Dist: wexample-filestate-symfony>=2.1.0
16
+ Requires-Dist: wexample-wex-addon-ai>=18.1.0
17
+ Requires-Dist: wexample-wex-addon-app>=33.0.0
18
+ Requires-Dist: wexample-wex-addon-dev-javascript>=8.3.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.6.0
26
+ Version: 12.7.0
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
 
@@ -195,7 +195,7 @@ Services live under `src/wexample_wex_addon_dev_php/services/`. Each service has
195
195
 
196
196
  #### php
197
197
 
198
- Defined in src/wexample_wex_addon_dev_php/services/php/service.yml and src/wexample_wex_addon_dev_php/services/php/docker/docker-compose.yml. The base PHP service: runs `dunglas/frankenphp:php8.4`, mounts the app at `/var/www/html`, and binds a `Caddyfile` and a `web.ini` from the runtime config. The `laravel` and `symfony` containers extend this compose service definition. Sample files for the Caddyfile (serving from `public/`, `php_server` directive) and `web.ini` (upload limits, memory limit) are shipped in `services/php/samples/`.
198
+ Defined in src/wexample_wex_addon_dev_php/services/php/service.yml and src/wexample_wex_addon_dev_php/services/php/docker/docker-compose.yml. The base PHP service: runs `dunglas/frankenphp:1.13.0-php8.5.11`, mounts the app at `/var/www/html`, and binds a `Caddyfile` and a `web.ini` from the runtime config. The `laravel` and `symfony` containers extend this compose service definition. Sample files for the Caddyfile (serving from `public/`, `php_server` directive) and `web.ini` (upload limits, memory limit) are shipped in `services/php/samples/`.
199
199
 
200
200
  #### frankenphp
201
201
 
@@ -203,7 +203,7 @@ Defined in src/wexample_wex_addon_dev_php/services/frankenphp/service.yml. A sta
203
203
 
204
204
  #### composer
205
205
 
206
- Defined in src/wexample_wex_addon_dev_php/services/composer/service.yml. A dedicated Composer container (`composer:latest`) that mounts the app at `/var/www/html` and stays alive via `tail -f /dev/null`. Its commands are the generic lock-management routines that Laravel and Symfony both call.
206
+ Defined in src/wexample_wex_addon_dev_php/services/composer/service.yml. A dedicated Composer container (`composer:2.9.7`) that mounts the app at `/var/www/html` and stays alive via `tail -f /dev/null`. Its PHP is the image's, not the app's, so it runs with `COMPOSER_IGNORE_PLATFORM_REQS=1`: extensions such as `intl` are the app container's to have. Its commands are the generic lock-management routines that Laravel and Symfony both call.
207
207
 
208
208
  #### laravel
209
209
 
@@ -273,11 +273,11 @@ Visit the [Wexample Suite documentation](https://docs.wexample.com) for the comp
273
273
 
274
274
  - attrs: >=23.1.0
275
275
  - cattrs: >=23.1.0
276
- - wexample-filestate-php: >=6.4.0
277
- - wexample-filestate-symfony: >=2.0.0
278
- - wexample-wex-addon-ai: >=17.0.0
279
- - wexample-wex-addon-app: >=32.4.0
280
- - wexample-wex-addon-dev-javascript: >=8.2.0
276
+ - wexample-filestate-php: >=6.5.0
277
+ - wexample-filestate-symfony: >=2.1.0
278
+ - wexample-wex-addon-ai: >=18.1.0
279
+ - wexample-wex-addon-app: >=33.0.0
280
+ - wexample-wex-addon-dev-javascript: >=8.3.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.6.0
3
+ Version: 12.7.0
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
 
@@ -172,7 +172,7 @@ Services live under `src/wexample_wex_addon_dev_php/services/`. Each service has
172
172
 
173
173
  #### php
174
174
 
175
- Defined in src/wexample_wex_addon_dev_php/services/php/service.yml and src/wexample_wex_addon_dev_php/services/php/docker/docker-compose.yml. The base PHP service: runs `dunglas/frankenphp:php8.4`, mounts the app at `/var/www/html`, and binds a `Caddyfile` and a `web.ini` from the runtime config. The `laravel` and `symfony` containers extend this compose service definition. Sample files for the Caddyfile (serving from `public/`, `php_server` directive) and `web.ini` (upload limits, memory limit) are shipped in `services/php/samples/`.
175
+ Defined in src/wexample_wex_addon_dev_php/services/php/service.yml and src/wexample_wex_addon_dev_php/services/php/docker/docker-compose.yml. The base PHP service: runs `dunglas/frankenphp:1.13.0-php8.5.11`, mounts the app at `/var/www/html`, and binds a `Caddyfile` and a `web.ini` from the runtime config. The `laravel` and `symfony` containers extend this compose service definition. Sample files for the Caddyfile (serving from `public/`, `php_server` directive) and `web.ini` (upload limits, memory limit) are shipped in `services/php/samples/`.
176
176
 
177
177
  #### frankenphp
178
178
 
@@ -180,7 +180,7 @@ Defined in src/wexample_wex_addon_dev_php/services/frankenphp/service.yml. A sta
180
180
 
181
181
  #### composer
182
182
 
183
- Defined in src/wexample_wex_addon_dev_php/services/composer/service.yml. A dedicated Composer container (`composer:latest`) that mounts the app at `/var/www/html` and stays alive via `tail -f /dev/null`. Its commands are the generic lock-management routines that Laravel and Symfony both call.
183
+ Defined in src/wexample_wex_addon_dev_php/services/composer/service.yml. A dedicated Composer container (`composer:2.9.7`) that mounts the app at `/var/www/html` and stays alive via `tail -f /dev/null`. Its PHP is the image's, not the app's, so it runs with `COMPOSER_IGNORE_PLATFORM_REQS=1`: extensions such as `intl` are the app container's to have. Its commands are the generic lock-management routines that Laravel and Symfony both call.
184
184
 
185
185
  #### laravel
186
186
 
@@ -250,11 +250,11 @@ Visit the [Wexample Suite documentation](https://docs.wexample.com) for the comp
250
250
 
251
251
  - attrs: >=23.1.0
252
252
  - cattrs: >=23.1.0
253
- - wexample-filestate-php: >=6.4.0
254
- - wexample-filestate-symfony: >=2.0.0
255
- - wexample-wex-addon-ai: >=17.0.0
256
- - wexample-wex-addon-app: >=32.4.0
257
- - wexample-wex-addon-dev-javascript: >=8.2.0
253
+ - wexample-filestate-php: >=6.5.0
254
+ - wexample-filestate-symfony: >=2.1.0
255
+ - wexample-wex-addon-ai: >=18.1.0
256
+ - wexample-wex-addon-app: >=33.0.0
257
+ - wexample-wex-addon-dev-javascript: >=8.3.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.6.0"
9
+ version = "12.7.0"
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" },
@@ -20,11 +20,11 @@ classifiers = [
20
20
  dependencies = [
21
21
  "attrs>=23.1.0",
22
22
  "cattrs>=23.1.0",
23
- "wexample-filestate-php>=6.4.0",
24
- "wexample-filestate-symfony>=2.0.0",
25
- "wexample-wex-addon-ai>=17.0.0",
26
- "wexample-wex-addon-app>=32.4.0",
27
- "wexample-wex-addon-dev-javascript>=8.2.0",
23
+ "wexample-filestate-php>=6.5.0",
24
+ "wexample-filestate-symfony>=2.1.0",
25
+ "wexample-wex-addon-ai>=18.1.0",
26
+ "wexample-wex-addon-app>=33.0.0",
27
+ "wexample-wex-addon-dev-javascript>=8.3.0",
28
28
  ]
29
29
 
30
30
  [project.readme]
@@ -1,4 +1,4 @@
1
- FROM php:8.5-cli
1
+ FROM php:8.5.11-cli
2
2
 
3
3
  RUN apt-get update && apt-get install -y \
4
4
  git \
@@ -6,7 +6,12 @@ RUN apt-get update && apt-get install -y \
6
6
  libicu-dev \
7
7
  libzip-dev \
8
8
  libpng-dev \
9
+ libjpeg62-turbo-dev \
10
+ libwebp-dev \
9
11
  && rm -rf /var/lib/apt/lists/* \
12
+ # GD as the applications have it: a package writing a thumbnail as WebP
13
+ # from an uploaded JPEG fails here otherwise, and nowhere else.
14
+ && docker-php-ext-configure gd --with-jpeg --with-webp \
10
15
  && docker-php-ext-install bcmath gd intl zip \
11
16
  # A test suite compiling a Symfony container outgrows the CLI's 128M.
12
17
  && echo 'memory_limit=1G' > /usr/local/etc/php/conf.d/memory.ini
@@ -19,7 +24,7 @@ RUN git config --system --add safe.directory '*'
19
24
  RUN groupadd -g 1000 appuser && \
20
25
  useradd -m -u 1000 -g 1000 -s /bin/bash appuser
21
26
 
22
- COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
27
+ COPY --from=composer:2.9.7 /usr/bin/composer /usr/bin/composer
23
28
 
24
29
  USER appuser
25
30
  RUN composer global require roave/backward-compatibility-check
@@ -2,11 +2,15 @@ services:
2
2
  composer:
3
3
  restart: unless-stopped
4
4
  container_name: ${APP_PROJECT_NAME}_composer
5
- image: composer:latest
5
+ image: composer:2.9.7
6
6
  working_dir: /var/www/html
7
7
  command: tail -f /dev/null
8
8
  environment:
9
9
  COMPOSER_ALLOW_SUPERUSER: "1"
10
+ # This PHP is the composer image's, not the app's: its extensions and version
11
+ # say nothing about what the app runs on (intl, pdo_pgsql… live in the app
12
+ # container). Platform requirements are the app container's to check.
13
+ COMPOSER_IGNORE_PLATFORM_REQS: "1"
10
14
  volumes:
11
15
  - ${APP_PATH}:/var/www/html
12
16
  extends:
@@ -2,7 +2,7 @@ services:
2
2
  frankenphp:
3
3
  restart: unless-stopped
4
4
  container_name: ${APP_PROJECT_NAME}_frankenphp
5
- image: dunglas/frankenphp:php8.4
5
+ image: dunglas/frankenphp:1.13.0-php8.5.11
6
6
  environment:
7
7
  - VIRTUAL_HOST=${APP_DOMAINS_STRING}
8
8
  - VIRTUAL_PORT=80
@@ -2,7 +2,7 @@ services:
2
2
  php:
3
3
  restart: unless-stopped
4
4
  container_name: ${APP_PROJECT_NAME}_php
5
- image: dunglas/frankenphp:php8.4
5
+ image: dunglas/frankenphp:1.13.0-php8.5.11
6
6
  environment:
7
7
  - VIRTUAL_HOST=${APP_DOMAINS_STRING}
8
8
  - VIRTUAL_PORT=80
@@ -2,6 +2,6 @@
2
2
  # containers (see the composer and node services), so nothing here needs to
3
3
  # know how the app is built.
4
4
 
5
- FROM dunglas/frankenphp:php8.4
5
+ FROM dunglas/frankenphp:1.13.0-php8.5.11
6
6
 
7
- RUN install-php-extensions pdo_pgsql intl
7
+ RUN install-php-extensions pdo_pgsql intl gd
@@ -6,16 +6,16 @@
6
6
  # .wex/docker/env.build lets that kernel boot without any deployment secret;
7
7
  # the database is never queried.
8
8
 
9
- FROM dunglas/frankenphp:php8.4 AS build
9
+ FROM dunglas/frankenphp:1.13.0-php8.5.11 AS build
10
10
 
11
- RUN install-php-extensions pdo_pgsql intl zip
11
+ RUN install-php-extensions pdo_pgsql intl zip gd
12
12
 
13
- RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
13
+ RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - \
14
14
  && apt-get install -y --no-install-recommends nodejs git unzip \
15
15
  && npm install -g yarn \
16
16
  && rm -rf /var/lib/apt/lists/*
17
17
 
18
- COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
18
+ COPY --from=composer:2.9.7 /usr/bin/composer /usr/bin/composer
19
19
 
20
20
  WORKDIR /var/www/html
21
21
 
@@ -35,9 +35,9 @@ RUN cp .wex/docker/env.build .env \
35
35
  && php bin/console cache:warmup \
36
36
  && rm -rf node_modules
37
37
 
38
- FROM dunglas/frankenphp:php8.4
38
+ FROM dunglas/frankenphp:1.13.0-php8.5.11
39
39
 
40
- RUN install-php-extensions pdo_pgsql intl opcache
40
+ RUN install-php-extensions pdo_pgsql intl opcache gd
41
41
 
42
42
  WORKDIR /var/www/html
43
43
 
@@ -195,8 +195,10 @@ class PhpPackageWorkdir(WithRunnerWorkdirMixin, PhpWorkdir):
195
195
  php is not on the host, and neither are the dependencies: a package's
196
196
  vendor/ lives in a Docker volume of its own, mounted where the tests
197
197
  expect it, so the host keeps no copy of it for an editor to index. The
198
- volume is refilled only when composer.json changed since; no lock is
199
- written, the package's own being left as it is.
198
+ volume is refilled when any composer.json of the suite changed since —
199
+ the siblings' too, since a path dependency gaining a requirement leaves
200
+ this package's own manifest untouched and its vendor/ short of it. No
201
+ lock is written, the package's own being left as it is.
200
202
 
201
203
  The packages' directory is mounted whole: the local siblings are linked
202
204
  into vendor/ by relative paths (composer path repositories). Run as the
@@ -216,6 +218,11 @@ class PhpPackageWorkdir(WithRunnerWorkdirMixin, PhpWorkdir):
216
218
  vendor_volume = f"wex-php-vendor-{path.name}-{path_hash}"
217
219
  cache_volume = "wex-php-composer-cache"
218
220
 
221
+ # The tests run as the user and write in the package (a test kernel's
222
+ # var/cache…): what an earlier run as root left there is handed back first.
223
+ if os.geteuid() == 0:
224
+ self.restore_real_user_ownership()
225
+
219
226
  # The mount point: Docker would create it as root otherwise. Created by
220
227
  # the user already when wex itself does not run as root.
221
228
  vendor_dir = path / "vendor"
@@ -239,7 +246,10 @@ class PhpPackageWorkdir(WithRunnerWorkdirMixin, PhpWorkdir):
239
246
  package_dir = f"{packages_dir}/{path.name}"
240
247
  script = (
241
248
  "set -e; "
242
- 'sum=$(sha1sum composer.json | cut -d" " -f1); '
249
+ # Every manifest of the mounted suite, not just this package's:
250
+ # the siblings are path dependencies, and what they require lands
251
+ # in this vendor/ without their change showing here.
252
+ 'sum=$(cat composer.json ../*/composer.json | sha1sum | cut -d" " -f1); '
243
253
  'if [ "$(cat vendor/.wex-composer-json 2>/dev/null)" != "$sum" ]; then '
244
254
  "composer config --global lock false; "
245
255
  "composer update --no-interaction --no-progress --no-scripts; "
@@ -94,6 +94,8 @@ class PhpSymfonyWorkdir(PhpWorkdir):
94
94
 
95
95
  raw_value = super().prepare_value(raw_value=raw_value)
96
96
 
97
+ self._require_symfony_acolyte(raw_value)
98
+
97
99
  # Declared statically rather than left to the inherited recursive
98
100
  # filter, because `sidecar_of` resolves its primary by the identity of
99
101
  # the very dict declaring it.
@@ -860,3 +862,27 @@ class PhpSymfonyWorkdir(PhpWorkdir):
860
862
  install = manifest.get("extra", {}).get("install", {})
861
863
  if install:
862
864
  yield name, directory, install
865
+
866
+ def _require_symfony_acolyte(self, raw_value: DictConfig) -> None:
867
+ """Make the app's composer.json require the package its content rules call.
868
+
869
+ The Symfony content options (`entity_extend` and siblings) are answered by a
870
+ console command shipped in a Composer package. Declaring the rules without the
871
+ package let rectification crash on any app that had not added it by hand — and
872
+ a local symlink under `vendor/` was no proof of it: without the requirement
873
+ Composer neither autoloads the package nor the app registers its bundle.
874
+
875
+ Only the requirement is written, and only when absent. The bundle still has to be
876
+ listed in `config/bundles.php`, which is PHP and not a structured file.
877
+ """
878
+ from wexample_filestate_symfony.const.symfony import (
879
+ SYMFONY_ACOLYTE_CONSTRAINT,
880
+ SYMFONY_ACOLYTE_PACKAGE,
881
+ )
882
+
883
+ for child in raw_value["children"]:
884
+ if isinstance(child, dict) and child.get("name") == "composer.json":
885
+ child.setdefault("should_contain_keys", {})[
886
+ f"require.{SYMFONY_ACOLYTE_PACKAGE}"
887
+ ] = SYMFONY_ACOLYTE_CONSTRAINT
888
+ return