wexample-wex-addon-dev-php 12.2.0__tar.gz → 12.3.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 (146) hide show
  1. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/PKG-INFO +8 -8
  2. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/README.md +4 -4
  3. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/pyproject.toml +4 -4
  4. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/file/php_composer_json_file.py +19 -0
  5. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/composer/commands/service/install_local.py +17 -1
  6. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/commands/service/watch.py +50 -8
  7. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/workdir/php_symfony_workdir.py +4 -1
  8. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/workdir/php_workdir.py +22 -0
  9. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/__init__.py +0 -0
  10. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/__pycache__/__init__.py +0 -0
  11. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/config_value/__init__.py +0 -0
  12. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/config_value/php_package_readme_config_value.py +0 -0
  13. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/const/__init__.py +0 -0
  14. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/const/tags.py +0 -0
  15. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/file/__init__.py +0 -0
  16. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/formatter/__init__.py +0 -0
  17. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/formatter/php_code_formatter.py +0 -0
  18. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/php_addon_manager.py +0 -0
  19. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/py.typed +0 -0
  20. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/resources/.wex.yml +0 -0
  21. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/resources/design_rules/php_code.md +0 -0
  22. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/resources/docker/Dockerfile.roave +0 -0
  23. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/resources/writing_rules/php_code.md +0 -0
  24. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/__init__.py +0 -0
  25. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/composer/__init__.py +0 -0
  26. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/composer/commands/__init__.py +0 -0
  27. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/composer/commands/service/__init__.py +0 -0
  28. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/composer/commands/service/refresh_lock.py +0 -0
  29. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/composer/docker/.wex.yml +0 -0
  30. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/composer/docker/docker-compose.yml +0 -0
  31. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/composer/service.yml +0 -0
  32. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/frankenphp/__init__.py +0 -0
  33. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/frankenphp/docker/.wex.yml +0 -0
  34. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/frankenphp/docker/docker-compose.yml +0 -0
  35. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/.wex.yml +0 -0
  36. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/caddy/.wex.yml +0 -0
  37. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/caddy/Caddyfile +0 -0
  38. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/docker/.wex.yml +0 -0
  39. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/docker/docker-compose.yml +0 -0
  40. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/dev/docker/.wex.yml +0 -0
  41. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/dev/docker/docker-compose.yml +0 -0
  42. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/local/docker/.wex.yml +0 -0
  43. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/local/docker/docker-compose.yml +0 -0
  44. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/prod/docker/.wex.yml +0 -0
  45. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/env/prod/docker/docker-compose.yml +0 -0
  46. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/php/.wex.yml +0 -0
  47. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/frankenphp/samples/php/web.ini +0 -0
  48. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/frankenphp/service.yml +0 -0
  49. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/laravel/__init__.py +0 -0
  50. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/laravel/app_service.py +0 -0
  51. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/laravel/commands/__init__.py +0 -0
  52. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/laravel/commands/db/__init__.py +0 -0
  53. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/laravel/commands/db/migrate.yml +0 -0
  54. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/laravel/commands/maintenance/__init__.py +0 -0
  55. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/laravel/commands/maintenance/disable.yml +0 -0
  56. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/laravel/commands/maintenance/enable.yml +0 -0
  57. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/laravel/commands/service/__init__.py +0 -0
  58. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/laravel/commands/service/install_local.py +0 -0
  59. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/laravel/commands/service/refresh_lock.py +0 -0
  60. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/laravel/docker/.wex.yml +0 -0
  61. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/laravel/docker/docker-compose.yml +0 -0
  62. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/laravel/samples/.wex.yml +0 -0
  63. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/laravel/samples/docker/docker-compose.yml +0 -0
  64. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/laravel/samples/env/dev/docker/docker-compose.yml +0 -0
  65. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/laravel/samples/env/prod/docker/docker-compose.yml +0 -0
  66. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/laravel/service.yml +0 -0
  67. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/php/__init__.py +0 -0
  68. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/php/ai/__init__.py +0 -0
  69. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/php/ai/shared/__init__.py +0 -0
  70. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/php/ai/shared/context.j2 +0 -0
  71. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/php/ai/shared/php.j2 +0 -0
  72. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/php/docker/.wex.yml +0 -0
  73. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/php/docker/docker-compose.yml +0 -0
  74. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/php/samples/.wex.yml +0 -0
  75. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/php/samples/caddy/.wex.yml +0 -0
  76. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/php/samples/caddy/Caddyfile +0 -0
  77. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/php/samples/docker/.wex.yml +0 -0
  78. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/php/samples/docker/docker-compose.yml +0 -0
  79. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/php/samples/env/dev/docker/.wex.yml +0 -0
  80. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/php/samples/env/dev/docker/docker-compose.yml +0 -0
  81. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/php/samples/env/local/docker/.wex.yml +0 -0
  82. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/php/samples/env/local/docker/docker-compose.yml +0 -0
  83. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/php/samples/env/prod/docker/.wex.yml +0 -0
  84. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/php/samples/env/prod/docker/docker-compose.yml +0 -0
  85. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/php/samples/php/.wex.yml +0 -0
  86. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/php/samples/php/web.ini +0 -0
  87. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/php/service.yml +0 -0
  88. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/phpmyadmin/__init__.py +0 -0
  89. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/phpmyadmin/commands/__init__.py +0 -0
  90. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/phpmyadmin/commands/runtime/__init__.py +0 -0
  91. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/phpmyadmin/docker/.wex.yml +0 -0
  92. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/phpmyadmin/docker/docker-compose.yml +0 -0
  93. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/phpmyadmin/env/.wex.yml +0 -0
  94. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/phpmyadmin/env/local/docker/docker-compose.yml +0 -0
  95. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/phpmyadmin/service.yml +0 -0
  96. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/__init__.py +0 -0
  97. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/ai/__init__.py +0 -0
  98. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/ai/agents/__init__.py +0 -0
  99. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/ai/agents/editor/__init__.py +0 -0
  100. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/ai/agents/editor/agent.yml +0 -0
  101. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/ai/agents/editor/context.j2 +0 -0
  102. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/ai/shared/__init__.py +0 -0
  103. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/ai/shared/context.j2 +0 -0
  104. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/app_service.py +0 -0
  105. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/commands/__init__.py +0 -0
  106. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/commands/service/__init__.py +0 -0
  107. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/commands/service/deploy.py +0 -0
  108. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/commands/service/install_local.py +0 -0
  109. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/docker/.wex.yml +0 -0
  110. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/docker/docker-compose.yml +0 -0
  111. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/knowledge/__init__.py +0 -0
  112. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/knowledge/entity.md +0 -0
  113. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/.wex.yml +0 -0
  114. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/docker/.wex.yml +0 -0
  115. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/docker/docker-compose.yml +0 -0
  116. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/docker/env.build +0 -0
  117. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/docker/images/.wex.yml +0 -0
  118. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/docker/images/Dockerfile.dev +0 -0
  119. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/docker/images/Dockerfile.release +0 -0
  120. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/env/dev/docker/.wex.yml +0 -0
  121. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/env/dev/docker/docker-compose.yml +0 -0
  122. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/env/local/docker/.wex.yml +0 -0
  123. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/env/local/docker/docker-compose.yml +0 -0
  124. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/env/prod/docker/.wex.yml +0 -0
  125. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/samples/env/prod/docker/docker-compose.yml +0 -0
  126. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/symfony/service.yml +0 -0
  127. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/wordpress/__init__.py +0 -0
  128. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/wordpress/commands/__init__.py +0 -0
  129. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/wordpress/commands/service/__init__.py +0 -0
  130. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/wordpress/commands/url/__init__.py +0 -0
  131. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/wordpress/commands/url/replace.py +0 -0
  132. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/wordpress/docker/.wex.yml +0 -0
  133. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/wordpress/docker/docker-compose.yml +0 -0
  134. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/wordpress/samples/.wex.yml +0 -0
  135. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/wordpress/samples/docker/docker-compose-cli.yml +0 -0
  136. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/wordpress/samples/docker/docker-compose.yml +0 -0
  137. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/wordpress/samples/env/dev/docker/docker-compose.yml +0 -0
  138. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/wordpress/samples/env/local/wp-cli/.gitkeep +0 -0
  139. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/wordpress/samples/env/prod/docker/docker-compose.yml +0 -0
  140. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/services/wordpress/service.yml +0 -0
  141. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/workdir/__init__.py +0 -0
  142. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/workdir/php_package_workdir.py +0 -0
  143. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/src/wexample_wex_addon_dev_php/workdir/php_packages_suite_workdir.py +0 -0
  144. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/tests/.gitkeep +0 -0
  145. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.0}/tests/workdir/__init__.py +0 -0
  146. {wexample_wex_addon_dev_php-12.2.0 → wexample_wex_addon_dev_php-12.3.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.2.0
3
+ Version: 12.3.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
@@ -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>=15.0.0
17
- Requires-Dist: wexample-wex-addon-app>=31.1.0
18
- Requires-Dist: wexample-wex-addon-dev-javascript>=8.1.0
16
+ Requires-Dist: wexample-wex-addon-ai>=16.0.0
17
+ Requires-Dist: wexample-wex-addon-app>=32.0.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.2.0
26
+ Version: 12.3.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
 
@@ -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: >=15.0.0
279
- - wexample-wex-addon-app: >=31.1.0
280
- - wexample-wex-addon-dev-javascript: >=8.1.0
278
+ - wexample-wex-addon-ai: >=16.0.0
279
+ - wexample-wex-addon-app: >=32.0.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.2.0
3
+ Version: 12.3.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
 
@@ -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: >=15.0.0
256
- - wexample-wex-addon-app: >=31.1.0
257
- - wexample-wex-addon-dev-javascript: >=8.1.0
255
+ - wexample-wex-addon-ai: >=16.0.0
256
+ - wexample-wex-addon-app: >=32.0.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.2.0"
9
+ version = "12.3.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" },
@@ -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>=15.0.0",
26
- "wexample-wex-addon-app>=31.1.0",
27
- "wexample-wex-addon-dev-javascript>=8.1.0",
25
+ "wexample-wex-addon-ai>=16.0.0",
26
+ "wexample-wex-addon-app>=32.0.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
- {composer_bin} install --no-scripts
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
- "docker",
74
- "exec",
75
- "-ti",
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
  )
@@ -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
- children_filter.filter = lambda path: excluded_segments.isdisjoint(path.parts)
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
  )