From cff98e90b26a76846c111461e646c7893f8fce48 Mon Sep 17 00:00:00 2001 From: DDEV User Date: Thu, 2 Oct 2025 19:37:14 -0400 Subject: [PATCH 1/7] POC for top-level organization. --- composer.json | 17 +++++++++---- phpstan.neon | 6 +++-- phpstanBootstrap.php | 3 +++ polymer_drupal.poly_info.yml | 1 + settings/polymer.settings.php | 24 +++++++------------ src/{Polymer => }/ExtensionInfo.php | 6 ++--- .../Plugin/Commands/ConfigCommands.php | 14 +++++------ .../Commands/DrupalMultisiteCommands.php | 4 ++-- .../Commands/InstallCommands.php} | 16 ++++++------- .../Plugin/Commands/SetupCommands.php | 8 +++---- .../Plugin/Commands/SyncCommands.php | 10 ++++---- .../Plugin/Commands/UpgradeCommands.php | 6 ++--- .../Plugin/Common/RandomString.php | 2 +- .../Plugin/Hooks/DrupalBuildSanitizeHook.php | 4 ++-- .../Plugin/Hooks/SiteConfigHook.php | 6 ++--- src/{Polymer => }/Plugin/Tasks/DrushTask.php | 2 +- .../Plugin/Tasks/LoadDrushTaskTrait.php | 6 ++--- .../GitHubWorkflows/AutomaticUpgrade.php | 4 ++-- .../PolymerDrupalServiceProvider.php | 20 ++++++++-------- .../Services/Event/AlterSiteSettingsFiles.php | 4 ++-- .../Services/Event/SiteSettingsFiles.php | 4 ++-- .../ContextProvidersSubscriber.php | 6 ++--- .../EventSubscriber/DrupalConfigInjector.php | 10 ++++---- .../PostInvokeCommandSubscriber.php | 8 +++---- src/{Polymer => }/Services/FileSystem.php | 2 +- src/VendorAssets.php | 2 +- 26 files changed, 100 insertions(+), 95 deletions(-) create mode 100644 phpstanBootstrap.php create mode 100644 polymer_drupal.poly_info.yml rename src/{Polymer => }/ExtensionInfo.php (84%) rename src/{Polymer => }/Plugin/Commands/ConfigCommands.php (94%) rename src/{Polymer => }/Plugin/Commands/DrupalMultisiteCommands.php (98%) rename src/{Polymer/Plugin/Commands/InstallCommand.php => Plugin/Commands/InstallCommands.php} (92%) rename src/{Polymer => }/Plugin/Commands/SetupCommands.php (98%) rename src/{Polymer => }/Plugin/Commands/SyncCommands.php (95%) rename src/{Polymer => }/Plugin/Commands/UpgradeCommands.php (96%) rename src/{Polymer => }/Plugin/Common/RandomString.php (97%) rename src/{Polymer => }/Plugin/Hooks/DrupalBuildSanitizeHook.php (96%) rename src/{Polymer => }/Plugin/Hooks/SiteConfigHook.php (91%) rename src/{Polymer => }/Plugin/Tasks/DrushTask.php (99%) rename src/{Polymer => }/Plugin/Tasks/LoadDrushTaskTrait.php (75%) rename src/{Polymer => }/Plugin/Template/GitHubWorkflows/AutomaticUpgrade.php (85%) rename src/{Polymer => }/PolymerDrupalServiceProvider.php (73%) rename src/{Polymer => }/Services/Event/AlterSiteSettingsFiles.php (89%) rename src/{Polymer => }/Services/Event/SiteSettingsFiles.php (89%) rename src/{Polymer => }/Services/EventSubscriber/ContextProvidersSubscriber.php (91%) rename src/{Polymer => }/Services/EventSubscriber/DrupalConfigInjector.php (92%) rename src/{Polymer => }/Services/EventSubscriber/PostInvokeCommandSubscriber.php (72%) rename src/{Polymer => }/Services/FileSystem.php (95%) diff --git a/composer.json b/composer.json index 83c7137..2c61d62 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,6 @@ { "name": "digitalpolygon/polymer-drupal", + "type": "polymer-plugin", "description": "Drupal integration for Polymer", "license": "GPL-2.0+", "authors":[ @@ -29,7 +30,7 @@ } }, "require": { - "digitalpolygon/polymer": "0.x-dev", + "digitalpolygon/polymer": "dev-feature/refactor-organization", "digitalpolygon/drupal-upgrade-plugin": "^2@dev", "drush/drush": "^12 || ^13", "php": ">=8.1", @@ -43,13 +44,14 @@ }, "minimum-stability": "dev", "prefer-stable": true, - "autoload": { - "psr-4": { - "DigitalPolygon\\PolymerDrupal\\": "./src/" - } + "extra": { + "installer-name": "polymer_drupal" }, "config": { "allow-plugins": { + "composer/installers": true, + "mnsami/composer-custom-directory-installer": true, + "oomphinc/composer-installers-extender": true, "digitalpolygon/polymer": true, "digitalpolygon/drupal-upgrade-plugin": true, "phpro/grumphp-shim": true @@ -64,5 +66,10 @@ "@cs", "@sa" ] + }, + "autoload": { + "classmap": [ + "src/VendorAssets.php" + ] } } diff --git a/phpstan.neon b/phpstan.neon index 89ab15f..f956cc5 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -3,10 +3,12 @@ parameters: paths: - src additionalConstructors: - - DigitalPolygon\PolymerDrupal\Polymer\Services\Event\SiteSettingsFiles::setSite - - DigitalPolygon\PolymerDrupal\Polymer\Services\Event\AlterSiteSettingsFiles::setSite + - DigitalPolygon\Polymer\Core\Services\Event\SiteSettingsFiles::setSite + - DigitalPolygon\Polymer\Core\Services\Event\AlterSiteSettingsFiles::setSite ignoreErrors: - message: "#^Parameter \\#2 \\$default of method Consolidation\\\\Config\\\\Util\\\\ConfigOverlay\\:\\:get\\(\\) expects string\\|null, array given\\.$#" - identifier: missingType.iterableValue + bootstrapFiles: + - phpstanBootstrap.php diff --git a/phpstanBootstrap.php b/phpstanBootstrap.php new file mode 100644 index 0000000..78c7272 --- /dev/null +++ b/phpstanBootstrap.php @@ -0,0 +1,3 @@ +taskDrush(); $strategy = $this->getConfigValue('drupal.cm.strategy'); diff --git a/src/Polymer/Plugin/Commands/DrupalMultisiteCommands.php b/src/Plugin/Commands/DrupalMultisiteCommands.php similarity index 98% rename from src/Polymer/Plugin/Commands/DrupalMultisiteCommands.php rename to src/Plugin/Commands/DrupalMultisiteCommands.php index c6a9bfe..63a23d4 100644 --- a/src/Polymer/Plugin/Commands/DrupalMultisiteCommands.php +++ b/src/Plugin/Commands/DrupalMultisiteCommands.php @@ -1,11 +1,11 @@ site = $this->input()->getOption('site'); - /** @var \DigitalPolygon\Polymer\Robo\Tasks\Command[] $commands */ + /** @var \DigitalPolygon\Polymer\Core\Robo\Tasks\Command[] $commands */ $commands = []; $commands[] = 'internal:drupal:install'; $strategy = $this->getConfigValue('drupal.cm.strategy'); @@ -148,7 +148,7 @@ function ($string) { /** @var string $drupal_locale */ $drupal_locale = $this->getConfigValue('drupal.locale'); - /** @var \DigitalPolygon\PolymerDrupal\Polymer\Plugin\Tasks\DrushTask $task */ + /** @var \DigitalPolygon\Polymer\polymer_drupal\Plugin\Tasks\DrushTask $task */ $task = $this->taskDrush() ->drush("site-install") ->arg($project_profile_name) diff --git a/src/Polymer/Plugin/Commands/SetupCommands.php b/src/Plugin/Commands/SetupCommands.php similarity index 98% rename from src/Polymer/Plugin/Commands/SetupCommands.php rename to src/Plugin/Commands/SetupCommands.php index 1480bb6..3ccd65a 100644 --- a/src/Polymer/Plugin/Commands/SetupCommands.php +++ b/src/Plugin/Commands/SetupCommands.php @@ -1,11 +1,11 @@ task(DrushTask::class); /** @var \Symfony\Component\Console\Output\OutputInterface $output */ $output = $this->output(); diff --git a/src/Polymer/Plugin/Template/GitHubWorkflows/AutomaticUpgrade.php b/src/Plugin/Template/GitHubWorkflows/AutomaticUpgrade.php similarity index 85% rename from src/Polymer/Plugin/Template/GitHubWorkflows/AutomaticUpgrade.php rename to src/Plugin/Template/GitHubWorkflows/AutomaticUpgrade.php index deabf53..4b304b0 100644 --- a/src/Polymer/Plugin/Template/GitHubWorkflows/AutomaticUpgrade.php +++ b/src/Plugin/Template/GitHubWorkflows/AutomaticUpgrade.php @@ -1,8 +1,8 @@ Date: Thu, 2 Oct 2025 20:40:40 -0400 Subject: [PATCH 2/7] Coding standards. --- .github/workflows/code_standards.yml | 11 ++---- composer.json | 6 ++- grumphp.yml | 13 +++++- phpcs-drupal.xml.dist | 9 +++++ phpcs.xml.dist => phpcs-non-drupal.xml.dist | 4 +- settings/config.settings.php | 2 +- settings/db.settings.php | 44 +++++++++++---------- settings/default.global.settings.php | 1 + settings/default.includes.settings.php | 1 + 9 files changed, 56 insertions(+), 35 deletions(-) create mode 100644 phpcs-drupal.xml.dist rename phpcs.xml.dist => phpcs-non-drupal.xml.dist (80%) diff --git a/.github/workflows/code_standards.yml b/.github/workflows/code_standards.yml index 8679d88..6e47820 100644 --- a/.github/workflows/code_standards.yml +++ b/.github/workflows/code_standards.yml @@ -35,11 +35,6 @@ jobs: run: | composer install --no-interaction - - name: Run PHP_CodeSniffer - run: composer cs - - - name: Lint - run: composer lint - - - name: Run PHPStan - run: composer sa + - name: GrumpPHP + run: | + vendor/bin/grumphp run --verbose diff --git a/composer.json b/composer.json index 2c61d62..1cbbca9 100644 --- a/composer.json +++ b/composer.json @@ -40,7 +40,8 @@ "phpstan/phpstan": "^1.11", "phpro/grumphp-shim": "^2.5", "squizlabs/php_codesniffer": "^3", - "php-parallel-lint/php-parallel-lint": "^1.4" + "php-parallel-lint/php-parallel-lint": "^1.4", + "drupal/coder": "^8.3" }, "minimum-stability": "dev", "prefer-stable": true, @@ -54,7 +55,8 @@ "oomphinc/composer-installers-extender": true, "digitalpolygon/polymer": true, "digitalpolygon/drupal-upgrade-plugin": true, - "phpro/grumphp-shim": true + "phpro/grumphp-shim": true, + "dealerdirect/phpcodesniffer-composer-installer": true } }, "scripts": { diff --git a/grumphp.yml b/grumphp.yml index a6fb5e7..edc3130 100644 --- a/grumphp.yml +++ b/grumphp.yml @@ -1,6 +1,17 @@ grumphp: hooks_dir: grumphp/hooks tasks: - phpcs: null + phpcs: + standard: PSR12 + whitelist_patterns: + - src/* + phpcs_drupal: + standard: + - Drupal + - DrupalPractice + whitelist_patterns: + - settings/* + metadata: + task: phpcs phpstan: null phplint: null diff --git a/phpcs-drupal.xml.dist b/phpcs-drupal.xml.dist new file mode 100644 index 0000000..bdffee2 --- /dev/null +++ b/phpcs-drupal.xml.dist @@ -0,0 +1,9 @@ + + + Default PHP CodeSniffer configuration for the Drupal Integration for Polymer WebOps Tooling project. + settings + + + + + diff --git a/phpcs.xml.dist b/phpcs-non-drupal.xml.dist similarity index 80% rename from phpcs.xml.dist rename to phpcs-non-drupal.xml.dist index 51c4ef8..5402af2 100644 --- a/phpcs.xml.dist +++ b/phpcs-non-drupal.xml.dist @@ -1,8 +1,8 @@ - + Default PHP CodeSniffer configuration for the Drupal Integration for Polymer WebOps Tooling project. src - + diff --git a/settings/config.settings.php b/settings/config.settings.php index 34b923f..826fed3 100644 --- a/settings/config.settings.php +++ b/settings/config.settings.php @@ -5,7 +5,7 @@ } // Configuration directories. -if ($polymer_override_config_directories) { +if ($polymer_override_config_directories && isset($repo_root)) { // phpcs:ignore $settings['config_sync_directory'] = $repo_root . "/config/default"; } diff --git a/settings/db.settings.php b/settings/db.settings.php index 27a10ce..755f90d 100644 --- a/settings/db.settings.php +++ b/settings/db.settings.php @@ -7,27 +7,29 @@ */ if (getenv('IS_DDEV_PROJECT') == 'true') { - $ddev_settings_file = DRUPAL_ROOT . "/$site_path/settings.ddev.php"; - if (file_exists($ddev_settings_file)) { - require $ddev_settings_file; - } - else { - $database_to_use = match($site_name) { - 'default' => 'db', - default => $site_name, - }; - $databases['default']['default'] = [ - 'database' => $database_to_use, - 'username' => 'db', - 'password' => 'db', - 'prefix' => '', - 'host' => 'db', - 'port' => 3306, - 'isolation_level' => 'READ COMMITTED', - 'driver' => 'mysql', - 'namespace' => 'Drupal\\mysql\\Driver\\Database\\mysql', - 'autoload' => 'core/modules/mysql/src/Driver/Database/mysql/', - ]; + if (isset($site_path)) { + $ddev_settings_file = DRUPAL_ROOT . "/$site_path/settings.ddev.php"; + if (file_exists($ddev_settings_file)) { + require $ddev_settings_file; + } + } + if (isset($site_name)) { + $database_to_use = match($site_name) { + 'default' => 'db', + default => $site_name, + }; + $databases['default']['default'] = [ + 'database' => $database_to_use, + 'username' => 'db', + 'password' => 'db', + 'prefix' => '', + 'host' => 'db', + 'port' => 3306, + 'isolation_level' => 'READ COMMITTED', + 'driver' => 'mysql', + 'namespace' => 'Drupal\\mysql\\Driver\\Database\\mysql', + 'autoload' => 'core/modules/mysql/src/Driver/Database/mysql/', + ]; } } diff --git a/settings/default.global.settings.php b/settings/default.global.settings.php index 5120b4f..a45c5b9 100644 --- a/settings/default.global.settings.php +++ b/settings/default.global.settings.php @@ -21,6 +21,7 @@ // e.g,( DRUPAL_ROOT . "/sites/settings/foo.settings.php" ) ]; +// @phpstan-ignore foreach.emptyArray foreach ($additionalSettingsFiles as $settingsFile) { if (file_exists($settingsFile)) { // phpcs:ignore diff --git a/settings/default.includes.settings.php b/settings/default.includes.settings.php index d5a9415..ef448df 100644 --- a/settings/default.includes.settings.php +++ b/settings/default.includes.settings.php @@ -42,6 +42,7 @@ // e.g,( DRUPAL_ROOT . "/sites/$site_dir/settings/foo.settings.php" ) ]; +// @phpstan-ignore foreach.emptyArray foreach ($additionalSettingsFiles as $settingsFile) { if (file_exists($settingsFile)) { // phpcs:ignore From 6bc7844d87957f54565710cfbeaf5f04c34ac983 Mon Sep 17 00:00:00 2001 From: DDEV User Date: Thu, 2 Oct 2025 21:03:52 -0400 Subject: [PATCH 3/7] Code fixes. --- .github/workflows/code_standards.yml | 11 ++++-- composer.json | 4 ++- grumphp.yml | 6 ++-- settings/config.settings.php | 7 +++- settings/db.settings.php | 49 +++++++++++++------------- settings/default.global.settings.php | 9 ++--- settings/default.includes.settings.php | 4 +-- settings/polymer.settings.php | 30 ++++++++-------- settings/sites.php | 9 +++-- 9 files changed, 75 insertions(+), 54 deletions(-) diff --git a/.github/workflows/code_standards.yml b/.github/workflows/code_standards.yml index 6e47820..8679d88 100644 --- a/.github/workflows/code_standards.yml +++ b/.github/workflows/code_standards.yml @@ -35,6 +35,11 @@ jobs: run: | composer install --no-interaction - - name: GrumpPHP - run: | - vendor/bin/grumphp run --verbose + - name: Run PHP_CodeSniffer + run: composer cs + + - name: Lint + run: composer lint + + - name: Run PHPStan + run: composer sa diff --git a/composer.json b/composer.json index 1cbbca9..91658d5 100644 --- a/composer.json +++ b/composer.json @@ -61,7 +61,9 @@ }, "scripts": { "lint": "find src test/src -name '*.php' -print0 | xargs -0 -n1 -P4 -- php -l", - "cs": "phpcs", + "cs": [ + "phpcs" + ], "sa": "phpstan analyse -v -c phpstan.neon", "validations": [ "@lint", diff --git a/grumphp.yml b/grumphp.yml index edc3130..c436e12 100644 --- a/grumphp.yml +++ b/grumphp.yml @@ -3,14 +3,16 @@ grumphp: tasks: phpcs: standard: PSR12 + warning_severity: 0 whitelist_patterns: - - src/* + - src phpcs_drupal: standard: - Drupal - DrupalPractice + warning_severity: 0 whitelist_patterns: - - settings/* + - settings metadata: task: phpcs phpstan: null diff --git a/settings/config.settings.php b/settings/config.settings.php index 826fed3..a15d39c 100644 --- a/settings/config.settings.php +++ b/settings/config.settings.php @@ -1,7 +1,12 @@ 'db', - default => $site_name, - }; - $databases['default']['default'] = [ - 'database' => $database_to_use, - 'username' => 'db', - 'password' => 'db', - 'prefix' => '', - 'host' => 'db', - 'port' => 3306, - 'isolation_level' => 'READ COMMITTED', - 'driver' => 'mysql', - 'namespace' => 'Drupal\\mysql\\Driver\\Database\\mysql', - 'autoload' => 'core/modules/mysql/src/Driver/Database/mysql/', - ]; + } + if (isset($site_name)) { + $database_to_use = match($site_name) { + 'default' => 'db', + default => $site_name, + }; + $databases['default']['default'] = [ + 'database' => $database_to_use, + 'username' => 'db', + 'password' => 'db', + 'prefix' => '', + 'host' => 'db', + 'port' => 3306, + 'isolation_level' => 'READ COMMITTED', + 'driver' => 'mysql', + 'namespace' => 'Drupal\\mysql\\Driver\\Database\\mysql', + 'autoload' => 'core/modules/mysql/src/Driver/Database/mysql/', + ]; } } diff --git a/settings/default.global.settings.php b/settings/default.global.settings.php index a45c5b9..06f1d02 100644 --- a/settings/default.global.settings.php +++ b/settings/default.global.settings.php @@ -14,8 +14,9 @@ /** * Include settings files in web/sites/settings. * - * If instead you want to add settings to a specific site, see Polymer's includes - * file in web/sites/{site-name}/settings/default.includes.settings.php. + * If instead you want to add settings to a specific site, see Polymer's + * includes file + * in web/sites/{site-name}/settings/default.includes.settings.php. */ $additionalSettingsFiles = [ // e.g,( DRUPAL_ROOT . "/sites/settings/foo.settings.php" ) @@ -23,8 +24,8 @@ // @phpstan-ignore foreach.emptyArray foreach ($additionalSettingsFiles as $settingsFile) { - if (file_exists($settingsFile)) { + if (file_exists($settingsFile)) { // phpcs:ignore require $settingsFile; - } + } } diff --git a/settings/default.includes.settings.php b/settings/default.includes.settings.php index ef448df..6d0aa48 100644 --- a/settings/default.includes.settings.php +++ b/settings/default.includes.settings.php @@ -44,8 +44,8 @@ // @phpstan-ignore foreach.emptyArray foreach ($additionalSettingsFiles as $settingsFile) { - if (file_exists($settingsFile)) { + if (file_exists($settingsFile)) { // phpcs:ignore require $settingsFile; - } + } } diff --git a/settings/polymer.settings.php b/settings/polymer.settings.php index 860a676..10bd897 100644 --- a/settings/polymer.settings.php +++ b/settings/polymer.settings.php @@ -18,7 +18,7 @@ $site_name = str_replace('sites/', '', $site_path); if (!isset($repo_root)) { - $repo_root = realpath(DRUPAL_ROOT . '/..'); + $repo_root = realpath(DRUPAL_ROOT . '/..'); } $settings_files = []; @@ -26,14 +26,14 @@ // Default global settings. // @todo Add polymer specific settings file as needed. $polymer_settings_files = [ - 'config', - 'db', + 'config', + 'db', ]; foreach ($polymer_settings_files as $polymer_settings_file) { - $settings_file = __DIR__ . "/$polymer_settings_file.settings.php"; - if (file_exists($settings_file)) { - $settings_files[] = $settings_file; - } + $settings_file = __DIR__ . "/$polymer_settings_file.settings.php"; + if (file_exists($settings_file)) { + $settings_files[] = $settings_file; + } } // Custom global and site-specific settings. @@ -42,21 +42,21 @@ $settings_files[] = DRUPAL_ROOT . "/sites/$site_name/settings/includes.settings.php"; if (EnvironmentDetectorBase::isCiEnv()) { - // Custom global and site-specific CI settings. - $settings_files[] = DRUPAL_ROOT . "/sites/settings/ci.settings.php"; - $settings_files[] = DRUPAL_ROOT . "/sites/$site_name/settings/ci.settings.php"; + // Custom global and site-specific CI settings. + $settings_files[] = DRUPAL_ROOT . "/sites/settings/ci.settings.php"; + $settings_files[] = DRUPAL_ROOT . "/sites/$site_name/settings/ci.settings.php"; } // Local global and site-specific settings. if (AcquiaEnvironmentDetector::isLocalEnv() || PantheonEnvironmentDetector::isLocalEnv()) { - // Use settings.local.php because that's what Drupal scaffold uses. - $settings_files[] = DRUPAL_ROOT . '/sites/settings/settings.local.php'; - $settings_files[] = DRUPAL_ROOT . "/sites/$site_name/settings.local.php"; + // Use settings.local.php because that's what Drupal scaffold uses. + $settings_files[] = DRUPAL_ROOT . '/sites/settings/settings.local.php'; + $settings_files[] = DRUPAL_ROOT . "/sites/$site_name/settings.local.php"; } foreach ($settings_files as $settings_file) { - if (file_exists($settings_file)) { + if (file_exists($settings_file)) { // phpcs:ignore require $settings_file; - } + } } diff --git a/settings/sites.php b/settings/sites.php index 10e5796..7c2b5a3 100644 --- a/settings/sites.php +++ b/settings/sites.php @@ -1,7 +1,12 @@ Date: Tue, 2 Jun 2026 08:45:55 -0400 Subject: [PATCH 4/7] Remove unused installer configuration Polymer plugins are discovered by package type and installed to vendor by default, so the custom installer-name and the custom-directory-installer / installers-extender allow-plugins entries are no longer needed. Refs PWT-115. Co-Authored-By: Claude Opus 4.8 --- composer.json | 5 ----- 1 file changed, 5 deletions(-) diff --git a/composer.json b/composer.json index 91658d5..423e7ca 100644 --- a/composer.json +++ b/composer.json @@ -45,14 +45,9 @@ }, "minimum-stability": "dev", "prefer-stable": true, - "extra": { - "installer-name": "polymer_drupal" - }, "config": { "allow-plugins": { "composer/installers": true, - "mnsami/composer-custom-directory-installer": true, - "oomphinc/composer-installers-extender": true, "digitalpolygon/polymer": true, "digitalpolygon/drupal-upgrade-plugin": true, "phpro/grumphp-shim": true, From b22de90236639bf428587af859921ebdca19dfca Mon Sep 17 00:00:00 2001 From: Les Peabody Date: Tue, 2 Jun 2026 09:31:57 -0400 Subject: [PATCH 5/7] Address Gemini review feedback on PR #28 - db.settings.php: only apply the default DDEV database config when settings.ddev.php was not loaded (it was unconditionally overwriting DDEV/multisite settings). - SetupCommands: emit the new \\DigitalPolygon\\Polymer\\polymer_drupal\\VendorAssets namespace into generated settings (the old \\DigitalPolygon\\PolymerDrupal reference no longer exists). - phpstan.neon: point additionalConstructors at the polymer_drupal event classes instead of the Core namespace. - settings templates: fix require/phpcs:ignore indentation for the Drupal coding standard. Refs PWT-115. Co-Authored-By: Claude Opus 4.8 --- phpstan.neon | 4 ++-- settings/db.settings.php | 6 +++++- settings/default.global.settings.php | 4 ++-- settings/default.includes.settings.php | 4 ++-- src/Plugin/Commands/SetupCommands.php | 4 ++-- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/phpstan.neon b/phpstan.neon index f956cc5..26c3e12 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -3,8 +3,8 @@ parameters: paths: - src additionalConstructors: - - DigitalPolygon\Polymer\Core\Services\Event\SiteSettingsFiles::setSite - - DigitalPolygon\Polymer\Core\Services\Event\AlterSiteSettingsFiles::setSite + - DigitalPolygon\Polymer\polymer_drupal\Services\Event\SiteSettingsFiles::setSite + - DigitalPolygon\Polymer\polymer_drupal\Services\Event\AlterSiteSettingsFiles::setSite ignoreErrors: - message: "#^Parameter \\#2 \\$default of method Consolidation\\\\Config\\\\Util\\\\ConfigOverlay\\:\\:get\\(\\) expects string\\|null, array given\\.$#" diff --git a/settings/db.settings.php b/settings/db.settings.php index 4c89f50..ba75cb2 100644 --- a/settings/db.settings.php +++ b/settings/db.settings.php @@ -8,13 +8,17 @@ */ if (getenv('IS_DDEV_PROJECT') == 'true') { + $ddev_settings_loaded = FALSE; if (isset($site_path)) { $ddev_settings_file = DRUPAL_ROOT . "/$site_path/settings.ddev.php"; if (file_exists($ddev_settings_file)) { require $ddev_settings_file; + $ddev_settings_loaded = TRUE; } } - if (isset($site_name)) { + // Only apply the default DDEV database settings when settings.ddev.php was not + // loaded, so it does not overwrite DDEV's own (e.g. multisite) configuration. + if (!$ddev_settings_loaded && isset($site_name)) { $database_to_use = match($site_name) { 'default' => 'db', default => $site_name, diff --git a/settings/default.global.settings.php b/settings/default.global.settings.php index 06f1d02..d8869fb 100644 --- a/settings/default.global.settings.php +++ b/settings/default.global.settings.php @@ -25,7 +25,7 @@ // @phpstan-ignore foreach.emptyArray foreach ($additionalSettingsFiles as $settingsFile) { if (file_exists($settingsFile)) { - // phpcs:ignore - require $settingsFile; + // phpcs:ignore + require $settingsFile; } } diff --git a/settings/default.includes.settings.php b/settings/default.includes.settings.php index 6d0aa48..90c3d7e 100644 --- a/settings/default.includes.settings.php +++ b/settings/default.includes.settings.php @@ -45,7 +45,7 @@ // @phpstan-ignore foreach.emptyArray foreach ($additionalSettingsFiles as $settingsFile) { if (file_exists($settingsFile)) { - // phpcs:ignore - require $settingsFile; + // phpcs:ignore + require $settingsFile; } } diff --git a/src/Plugin/Commands/SetupCommands.php b/src/Plugin/Commands/SetupCommands.php index 3ccd65a..082995b 100644 --- a/src/Plugin/Commands/SetupCommands.php +++ b/src/Plugin/Commands/SetupCommands.php @@ -141,8 +141,8 @@ protected function appendPolymerSettingsInclusion(string $site): void * @link https://digitalpolygon.github.io/polymer-drupal/ */ // Polymer assumes that this inclusion always comes at the end of the file. -if (method_exists('\DigitalPolygon\PolymerDrupal\VendorAssets', 'dir')) { - \$polymer_settings_file = \DigitalPolygon\PolymerDrupal\VendorAssets::dir() . '/polymer.settings.php'; +if (method_exists('\DigitalPolygon\Polymer\polymer_drupal\VendorAssets', 'dir')) { + \$polymer_settings_file = \DigitalPolygon\Polymer\polymer_drupal\VendorAssets::dir() . '/polymer.settings.php'; if (file_exists(\$polymer_settings_file)) { require \$polymer_settings_file; } From 93e79d66ffd41e50ceaaca3327b0271fa83a931d Mon Sep 17 00:00:00 2001 From: Les Peabody Date: Tue, 2 Jun 2026 09:43:30 -0400 Subject: [PATCH 6/7] Require digitalpolygon/polymer 0.x-dev instead of the merged feature branch The reorganization landed on polymer 0.x (PR #76) and the feature/refactor-organization branch was deleted, so the dev-feature/refactor-organization constraint no longer resolves and CI composer install fails. Point at 0.x-dev. Refs PWT-115. Co-Authored-By: Claude Opus 4.8 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 423e7ca..941424e 100644 --- a/composer.json +++ b/composer.json @@ -30,7 +30,7 @@ } }, "require": { - "digitalpolygon/polymer": "dev-feature/refactor-organization", + "digitalpolygon/polymer": "0.x-dev", "digitalpolygon/drupal-upgrade-plugin": "^2@dev", "drush/drush": "^12 || ^13", "php": ">=8.1", From c0f59b255cfdef6d340e008a751b765ffb60c5f4 Mon Sep 17 00:00:00 2001 From: Les Peabody Date: Tue, 2 Jun 2026 11:14:03 -0400 Subject: [PATCH 7/7] Run phpcs against the split standards in the cs script The reorg split phpcs.xml.dist into phpcs-non-drupal.xml.dist (PSR-12, src) and phpcs-drupal.xml.dist (Drupal, settings), but the composer cs script still ran bare `phpcs`, which finds no config and errors with "You must supply at least one file or directory". Point it at both standards. Refs PWT-115. Co-Authored-By: Claude Opus 4.8 --- composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 941424e..1ecc82a 100644 --- a/composer.json +++ b/composer.json @@ -57,7 +57,8 @@ "scripts": { "lint": "find src test/src -name '*.php' -print0 | xargs -0 -n1 -P4 -- php -l", "cs": [ - "phpcs" + "phpcs --standard=phpcs-non-drupal.xml.dist", + "phpcs --standard=phpcs-drupal.xml.dist" ], "sa": "phpstan analyse -v -c phpstan.neon", "validations": [