From 4cded5b36a8ee18c2d5e70229d3ad1a5d2070590 Mon Sep 17 00:00:00 2001 From: DDEV User Date: Thu, 2 Oct 2025 19:41:32 -0400 Subject: [PATCH 1/5] POC top-level organization. --- composer.json | 7 +++---- polymer_pantheon_drupal.poly_info.yml | 1 + .../TerminusPluginNotInstalledException.php | 2 +- src/{Polymer => }/ExtensionInfo.php | 4 ++-- .../Plugin/Commands/NewRelicCommands.php | 4 ++-- .../Plugin/Commands/PantheonFileCommands.php | 12 ++++++------ .../Plugin/Hooks/PantheonArtifactHook.php | 8 ++++---- src/{Polymer => }/Plugin/Template/DrushSiteYaml.php | 6 +++--- .../GitHubWorkflows/PantheonPrMultidevCreate.php | 6 +++--- .../GitHubWorkflows/PantheonPrMultidevDelete.php | 6 +++--- .../Plugin/Template/GitHubWorkflows/PantheonPush.php | 6 +++--- .../Template/GitHubWorkflows/PantheonPushDev.php | 6 +++--- src/{Polymer => }/Plugin/Template/PantheonYaml.php | 6 +++--- .../Plugin/Template/QuicksilverYaml.php | 4 ++-- .../PolymerPantheonDrupalServiceProvider.php | 12 ++---------- .../EventSubscriber/DrupalEventsSubscriber.php | 7 +++---- 16 files changed, 44 insertions(+), 53 deletions(-) create mode 100644 polymer_pantheon_drupal.poly_info.yml rename src/{Polymer => }/Exception/TerminusPluginNotInstalledException.php (77%) rename src/{Polymer => }/ExtensionInfo.php (61%) rename src/{Polymer => }/Plugin/Commands/NewRelicCommands.php (96%) rename src/{Polymer => }/Plugin/Commands/PantheonFileCommands.php (94%) rename src/{Polymer => }/Plugin/Hooks/PantheonArtifactHook.php (94%) rename src/{Polymer => }/Plugin/Template/DrushSiteYaml.php (83%) rename src/{Polymer => }/Plugin/Template/GitHubWorkflows/PantheonPrMultidevCreate.php (86%) rename src/{Polymer => }/Plugin/Template/GitHubWorkflows/PantheonPrMultidevDelete.php (84%) rename src/{Polymer => }/Plugin/Template/GitHubWorkflows/PantheonPush.php (81%) rename src/{Polymer => }/Plugin/Template/GitHubWorkflows/PantheonPushDev.php (83%) rename src/{Polymer => }/Plugin/Template/PantheonYaml.php (81%) rename src/{Polymer => }/Plugin/Template/QuicksilverYaml.php (90%) rename src/{Polymer => }/PolymerPantheonDrupalServiceProvider.php (53%) rename src/{Polymer => }/Services/EventSubscriber/DrupalEventsSubscriber.php (92%) diff --git a/composer.json b/composer.json index 1ea8214..22d6352 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,6 @@ { "name": "digitalpolygon/polymer-pantheon-drupal", + "type": "polymer-plugin", "description": "Helpful scripts and tools for integrating Drupal with Pantheon.", "authors":[ { @@ -14,10 +15,8 @@ }, "minimum-stability": "dev", "prefer-stable": true, - "autoload": { - "psr-4": { - "DigitalPolygon\\PolymerPantheon\\Drupal\\": "./src/" - } + "extra": { + "installer-name": "polymer_pantheon_drupal" }, "require": { "digitalpolygon/polymer-drupal": "0.x-dev", diff --git a/polymer_pantheon_drupal.poly_info.yml b/polymer_pantheon_drupal.poly_info.yml new file mode 100644 index 0000000..437f77e --- /dev/null +++ b/polymer_pantheon_drupal.poly_info.yml @@ -0,0 +1 @@ +name: Polymer Pantheon Drupal diff --git a/src/Polymer/Exception/TerminusPluginNotInstalledException.php b/src/Exception/TerminusPluginNotInstalledException.php similarity index 77% rename from src/Polymer/Exception/TerminusPluginNotInstalledException.php rename to src/Exception/TerminusPluginNotInstalledException.php index ad7ca68..b912c26 100644 --- a/src/Polymer/Exception/TerminusPluginNotInstalledException.php +++ b/src/Exception/TerminusPluginNotInstalledException.php @@ -1,6 +1,6 @@ Date: Thu, 2 Oct 2025 21:52:43 -0400 Subject: [PATCH 2/5] Code standards. --- composer.json | 14 +++++++++++--- grumphp.yml | 19 ++++++++++++++++++- grumphp/hooks/commit-msg | 27 +++++++++++++++++++++++++++ grumphp/hooks/pre-commit | 23 +++++++++++++++++++++++ phpcs-drupal.xml.dist | 9 +++++++++ phpcs-non-drupal.xml.dist | 8 ++++++++ phpcs.xml.dist | 14 -------------- 7 files changed, 96 insertions(+), 18 deletions(-) create mode 100644 grumphp/hooks/commit-msg create mode 100644 grumphp/hooks/pre-commit create mode 100644 phpcs-drupal.xml.dist create mode 100644 phpcs-non-drupal.xml.dist delete mode 100644 phpcs.xml.dist diff --git a/composer.json b/composer.json index 22d6352..edbd8c4 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,7 @@ "installer-name": "polymer_pantheon_drupal" }, "require": { - "digitalpolygon/polymer-drupal": "0.x-dev", + "digitalpolygon/polymer-drupal": "dev-feature/refactor-organization", "pantheon-systems/drupal-integrations": "* !=11.0.0" }, "require-dev": { @@ -34,17 +34,25 @@ "digitalpolygon/polymer": true, "digitalpolygon/drupal-upgrade-plugin": true, "phpstan/extension-installer": true, - "phpro/grumphp-shim": true + "phpro/grumphp-shim": true, + "composer/installers": true, + "mnsami/composer-custom-directory-installer": true, + "oomphinc/composer-installers-extender": true } }, "scripts": { "lint": "find src test/src -name '*.php' -print0 | xargs -0 -n1 -P4 -- php -l", - "cs": "phpcs", + "cs": "phpcs --standard=phpcs-non-drupal.xml.dist --report=full -s", "sa": "phpstan analyse -v -c phpstan.neon", "validations": [ "@lint", "@cs", "@sa" ] + }, + "autoload-dev": { + "psr-4": { + "DigitalPolygon\\Polymer\\polymer_drupal\\": "vendor/digitalpolygon/polymer-drupal/src/" } + } } diff --git a/grumphp.yml b/grumphp.yml index afcf7ec..3114804 100644 --- a/grumphp.yml +++ b/grumphp.yml @@ -1,2 +1,19 @@ grumphp: - tasks: { } + hooks_dir: grumphp/hooks + tasks: + phpcs: + standard: PSR12 + warning_severity: 0 + whitelist_patterns: + - src +# phpcs_drupal: +# standard: +# - Drupal +# - DrupalPractice +# warning_severity: 0 +# whitelist_patterns: +# - settings +# metadata: +# task: phpcs + phpstan: null + phplint: null diff --git a/grumphp/hooks/commit-msg b/grumphp/hooks/commit-msg new file mode 100644 index 0000000..2e29ab5 --- /dev/null +++ b/grumphp/hooks/commit-msg @@ -0,0 +1,27 @@ +#!/bin/sh + +# +# Run the hook command. +# Note: this will be replaced by the real command during copy. +# + +GIT_USER=$(git config user.name) +GIT_EMAIL=$(git config user.email) +COMMIT_MSG_FILE=$1 + +# Fetch the GIT diff and format it as command input: +DIFF=$(git -c diff.mnemonicprefix=false -c diff.noprefix=false --no-pager diff -r -p -m -M --full-index --no-color --staged | cat) + +# Grumphp env vars +$(ENV) +export GRUMPHP_GIT_WORKING_DIR="$(git rev-parse --show-toplevel)" + +DDEV_PREFIX="ddev exec --" +COMMAND_PREFIX="" + +if [ -z "${IS_DDEV_PROJECT}" ]; then + COMMAND_PREFIX="${DDEV_PREFIX}" +fi + +# Run GrumPHP +(cd "${HOOK_EXEC_PATH}" && printf "%s\n" "${DIFF}" | $COMMAND_PREFIX $(EXEC_GRUMPHP_COMMAND) $(HOOK_COMMAND) "--git-user='$GIT_USER'" "--git-email='$GIT_EMAIL'" "$COMMIT_MSG_FILE") diff --git a/grumphp/hooks/pre-commit b/grumphp/hooks/pre-commit new file mode 100644 index 0000000..4d03e6b --- /dev/null +++ b/grumphp/hooks/pre-commit @@ -0,0 +1,23 @@ +#!/bin/sh + +# +# Run the hook command. +# Note: this will be replaced by the real command during copy. +# + +# Fetch the GIT diff and format it as command input: +DIFF=$(git -c diff.mnemonicprefix=false -c diff.noprefix=false --no-pager diff -r -p -m -M --full-index --no-color --staged | cat) + +# Grumphp env vars +$(ENV) +export GRUMPHP_GIT_WORKING_DIR="$(git rev-parse --show-toplevel)" + +DDEV_PREFIX="ddev exec --" +COMMAND_PREFIX="" + +if [ -z "${IS_DDEV_PROJECT}" ]; then + COMMAND_PREFIX="${DDEV_PREFIX}" +fi + +# Run GrumPHP +(cd "${HOOK_EXEC_PATH}" && printf "%s\n" "${DIFF}" | $COMMAND_PREFIX $(EXEC_GRUMPHP_COMMAND) $(HOOK_COMMAND) '--skip-success-output') 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-non-drupal.xml.dist b/phpcs-non-drupal.xml.dist new file mode 100644 index 0000000..5402af2 --- /dev/null +++ b/phpcs-non-drupal.xml.dist @@ -0,0 +1,8 @@ + + + Default PHP CodeSniffer configuration for the Drupal Integration for Polymer WebOps Tooling project. + src + + + + diff --git a/phpcs.xml.dist b/phpcs.xml.dist deleted file mode 100644 index 2bd91f5..0000000 --- a/phpcs.xml.dist +++ /dev/null @@ -1,14 +0,0 @@ - - - Default PHP CodeSniffer configuration for Polymer projects and extensions. - src - - - - - - - - - - From b856fec83747cced2b21ea4b18fe306728971261 Mon Sep 17 00:00:00 2001 From: Les Peabody Date: Tue, 2 Jun 2026 08:45:55 -0400 Subject: [PATCH 3/5] 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 | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/composer.json b/composer.json index edbd8c4..10ff31b 100644 --- a/composer.json +++ b/composer.json @@ -15,9 +15,6 @@ }, "minimum-stability": "dev", "prefer-stable": true, - "extra": { - "installer-name": "polymer_pantheon_drupal" - }, "require": { "digitalpolygon/polymer-drupal": "dev-feature/refactor-organization", "pantheon-systems/drupal-integrations": "* !=11.0.0" @@ -35,9 +32,7 @@ "digitalpolygon/drupal-upgrade-plugin": true, "phpstan/extension-installer": true, "phpro/grumphp-shim": true, - "composer/installers": true, - "mnsami/composer-custom-directory-installer": true, - "oomphinc/composer-installers-extender": true + "composer/installers": true } }, "scripts": { From 506fe1f29779cd9d60a75b10e10797809c7f9740 Mon Sep 17 00:00:00 2001 From: Les Peabody Date: Tue, 2 Jun 2026 09:31:58 -0400 Subject: [PATCH 4/5] Address Gemini review feedback on PR #35 Only prefix git hook commands with `ddev exec --` when not in a DDEV container AND a .ddev directory and the ddev binary are present, so commits do not break for non-DDEV developers. Refs PWT-115. Co-Authored-By: Claude Opus 4.8 --- grumphp/hooks/commit-msg | 2 +- grumphp/hooks/pre-commit | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/grumphp/hooks/commit-msg b/grumphp/hooks/commit-msg index 2e29ab5..aca41c6 100644 --- a/grumphp/hooks/commit-msg +++ b/grumphp/hooks/commit-msg @@ -19,7 +19,7 @@ export GRUMPHP_GIT_WORKING_DIR="$(git rev-parse --show-toplevel)" DDEV_PREFIX="ddev exec --" COMMAND_PREFIX="" -if [ -z "${IS_DDEV_PROJECT}" ]; then +if [ -z "${IS_DDEV_PROJECT}" ] && [ -d .ddev ] && command -v ddev >/dev/null 2>&1; then COMMAND_PREFIX="${DDEV_PREFIX}" fi diff --git a/grumphp/hooks/pre-commit b/grumphp/hooks/pre-commit index 4d03e6b..9c406cf 100644 --- a/grumphp/hooks/pre-commit +++ b/grumphp/hooks/pre-commit @@ -15,7 +15,7 @@ export GRUMPHP_GIT_WORKING_DIR="$(git rev-parse --show-toplevel)" DDEV_PREFIX="ddev exec --" COMMAND_PREFIX="" -if [ -z "${IS_DDEV_PROJECT}" ]; then +if [ -z "${IS_DDEV_PROJECT}" ] && [ -d .ddev ] && command -v ddev >/dev/null 2>&1; then COMMAND_PREFIX="${DDEV_PREFIX}" fi From a046ad636fe8470a6ea3af709efb6a693434e01b Mon Sep 17 00:00:00 2001 From: Les Peabody Date: Tue, 2 Jun 2026 11:17:15 -0400 Subject: [PATCH 5/5] Require digitalpolygon/polymer-drupal 0.x-dev instead of the merged feature branch The reorganization landed on polymer-drupal 0.x (PR #28), so point at 0.x-dev rather than the dev-feature/refactor-organization branch, which would break once that branch is removed. 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 10ff31b..244784b 100644 --- a/composer.json +++ b/composer.json @@ -16,7 +16,7 @@ "minimum-stability": "dev", "prefer-stable": true, "require": { - "digitalpolygon/polymer-drupal": "dev-feature/refactor-organization", + "digitalpolygon/polymer-drupal": "0.x-dev", "pantheon-systems/drupal-integrations": "* !=11.0.0" }, "require-dev": {