From 98d5b3d771f7e59a68bda02960a9cd6ffeb179db Mon Sep 17 00:00:00 2001 From: jurgenhaas <juergen.haas@lakedrops.com> Date: Thu, 27 Jun 2024 10:07:39 +0200 Subject: [PATCH] composer/plugin/drupal-environment#17 Implement default settings for composer.json --- defaults/config.json | 9 ++++----- src/Plugin.php | 29 ++++++++++++++++------------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/defaults/config.json b/defaults/config.json index d8021db..f63e599 100644 --- a/defaults/config.json +++ b/defaults/config.json @@ -9,17 +9,16 @@ ], "allow-plugins": { "composer/installers": true, - "dealerdirect/phpcodesniffer-composer-installer": true, "cweagans/composer-patches": true, + "dealerdirect/phpcodesniffer-composer-installer": true, "drupal/core-composer-scaffold": true, + "drupal/core-vendor-hardening": true, "endroid/installer": true, - "bitegra/*": true, "lakedrops/*": true, - "php-http/discovery": false, - "phpstan/extension-installer": true, "mxr576/ddqg-composer-audit": true, "oomphinc/composer-installers-extender": true, - "drupal/core-vendor-hardening": true, + "php-http/discovery": false, + "phpstan/extension-installer": true, "zodiacmedia/drupal-libraries-installer": true } } diff --git a/src/Plugin.php b/src/Plugin.php index 48a6d49..55ab7ce 100644 --- a/src/Plugin.php +++ b/src/Plugin.php @@ -3,14 +3,12 @@ namespace LakeDrops\DrupalEnvironment; use Composer\Composer; -use Composer\Config; use Composer\IO\IOInterface; use Composer\Plugin\Capability\CommandProvider as ComposerCommandProvider; use Composer\Script\Event; use Composer\Script\ScriptEvents; use Drupal\Composer\Plugin\Scaffold\Handler as DrupalScaffoldHandler; use LakeDrops\Component\Composer\BasePlugin; -use LakeDrops\Component\Composer\NestedArray; /** * Composer plugin for handling drupal scaffold. @@ -29,20 +27,21 @@ class Plugin extends BasePlugin { */ public function activate(Composer $composer, IOInterface $io): void { parent::activate($composer, $io); - $this->scaffoldHandler = new DrupalScaffoldHandler($composer, $io); + if (class_exists(DrupalScaffoldHandler::class)) { + $this->scaffoldHandler = new DrupalScaffoldHandler($composer, $io); + } $extra = $composer->getPackage()->getExtra(); if (isset($extra['lakedrops-config-file']) || isset($extra['lakedrops-curated-file'])) { - $config = $composer->getConfig()->all()['config'] ?? []; if (isset($extra['lakedrops-config-file'])) { - $defaultConfig = $this->readJson('config', $extra['lakedrops-config-file'], $io); - $config = NestedArray::mergeDeep($defaultConfig, $config); + foreach ($this->readJson('config', $extra['lakedrops-config-file'], $io) as $key => $value) { + $composer->getConfig()->getConfigSource()->addConfigSetting($key, $value); + } } if (isset($extra['lakedrops-curated-file'])) { - $config['audit']['ignore'] = $this->readJson('audit ignore', $extra['lakedrops-curated-file'], $io); + $audit = $composer->getConfig()->get('audit'); + $audit['ignore'] = $this->readJson('audit ignore', $extra['lakedrops-curated-file'], $io); + $composer->getConfig()->getConfigSource()->addConfigSetting('audit', $audit); } - $composerConfig = new Config(); - $composerConfig->merge(['config' => $config]); - $composer->setConfig($composerConfig); } $extras = [ @@ -120,9 +119,13 @@ class Plugin extends BasePlugin { */ protected function readJson(string $type, string $filename, IOInterface $io): array { $io->write('<info>Gathering ' . $type . ' from patch file.</info>'); - $data = file_get_contents($filename); - $data = json_decode($data, TRUE); - $error = json_last_error(); + try { + $data = json_decode(file_get_contents($filename), TRUE, 512, JSON_THROW_ON_ERROR); + $error = json_last_error(); + } + catch (\JsonException) { + $error = JSON_ERROR_SYNTAX; + } if ($error !== 0) { $msg = match ($error) { JSON_ERROR_DEPTH => ' - Maximum stack depth exceeded', -- GitLab