From 596dff2a3ac1a3465c49056e5e9a896068dc50e2 Mon Sep 17 00:00:00 2001 From: jurgenhaas <juergen@paragon-es.de> Date: Thu, 1 Nov 2018 10:59:31 +0100 Subject: [PATCH] Refactor namespace to extend LakeDrops Composer Components --- composer.json | 2 +- src/Handler.php | 89 +++++-------------------------------------------- src/Plugin.php | 29 ++++++++-------- 3 files changed, 26 insertions(+), 94 deletions(-) diff --git a/composer.json b/composer.json index deb456f..284f023 100644 --- a/composer.json +++ b/composer.json @@ -36,7 +36,7 @@ "drupal/coder": "^8.2", "lakedrops/ahoy": "^1.0.0", "lakedrops/behat4drupal": "^1.0.0", - "lakedrops/composer-scripts": "^1.0.0", + "lakedrops/composer-scripts": "^1.1.0", "lakedrops/docker4drupal": "^1.0.0", "lakedrops/dorgflow": "^1.0.0", "mikey179/vfsStream": "^1.6", diff --git a/src/Handler.php b/src/Handler.php index df5e598..d3f9e54 100644 --- a/src/Handler.php +++ b/src/Handler.php @@ -5,6 +5,8 @@ namespace LakeDrops\Drupal8ScaffoldDeveloper; use Composer\Composer; use Composer\IO\IOInterface; use Composer\Script\Event; +use LakeDrops\Component\Composer\BaseHandler; +use LakeDrops\Component\Dotenv\Dotenv; use LakeDrops\Docker4Drupal\Handler as D4D; use Symfony\Component\Filesystem\Filesystem; @@ -13,76 +15,17 @@ use Symfony\Component\Filesystem\Filesystem; * * @package LakeDrops\Drupal8ScaffoldDeveloper */ -class Handler { - - /** - * The composer object running this session. - * - * @var \Composer\Composer - */ - protected $composer; - - /** - * The input-output object for the composer session. - * - * @var \Composer\IO\IOInterface - */ - protected $io; - - /** - * The Drupal core package. - * - * @var \Composer\Package\PackageInterface - */ - protected $drupalCorePackage; - - /** - * Handler constructor. - * - * @param \Composer\Composer $composer - * The composer object. - * @param \Composer\IO\IOInterface $io - * The input-output object. - */ - public function __construct(Composer $composer, IOInterface $io) { - $this->composer = $composer; - $this->io = $io; - } - - /** - * Get the Drupal Core package. - * - * Look up the Drupal core package object, or return it from where we cached - * it in the $drupalCorePackage field. - * - * @return \Composer\Package\PackageInterface - * The Drupal Core package. - */ - protected function getDrupalCorePackage() { - if (!isset($this->drupalCorePackage)) { - $this->drupalCorePackage = $this->getPackage('drupal/core'); - } - return $this->drupalCorePackage; - } - - /** - * Retrieve a package from the current composer process. - * - * @param string $name - * Name of the package to get from the current composer installation. - * - * @return \Composer\Package\PackageInterface - * The package. - */ - protected function getPackage($name) { - return $this->composer->getRepositoryManager()->getLocalRepository()->findPackage($name, '*'); - } +class Handler extends BaseHandler { /** * Post project create event to execute the scaffolding. * * @param \Composer\Script\Event $event * The event that triggered the plugin. + * + * @throws \Twig_Error_Loader + * @throws \Twig_Error_Runtime + * @throws \Twig_Error_Syntax */ public function setupLakeDropsProject(Event $event) { @@ -251,22 +194,8 @@ class Handler { 'allowedOrigins' => '*', ], ]; - return $options; - } - - /** - * Wrapper for git command in the root directory. - * - * @param string $command - * Git command name, arguments and/or options. - * - * @throws \Exception - */ - protected function git($command) { - passthru(escapeshellcmd('git -c "user.email=d8-project@lakedrops.com" ' . $command), $exit_code); - if ($exit_code !== 0) { - throw new \Exception('Git returned a non-zero exit code'); - } + $env = new Dotenv('lakedrops', $this->io); + return $env->replaceEnvironmentVariables($options); } } diff --git a/src/Plugin.php b/src/Plugin.php index 5d9b076..3de10c6 100644 --- a/src/Plugin.php +++ b/src/Plugin.php @@ -3,24 +3,16 @@ namespace LakeDrops\Drupal8ScaffoldDeveloper; use Composer\Composer; -use Composer\EventDispatcher\EventSubscriberInterface; use Composer\IO\IOInterface; -use Composer\Plugin\PluginInterface; use Composer\Script\Event; use Composer\Script\ScriptEvents; use DrupalComposer\DrupalScaffold\Handler as DrupalScaffoldHandler; +use LakeDrops\Component\Composer\BasePlugin; /** * Composer plugin for handling drupal scaffold. */ -class Plugin implements PluginInterface, EventSubscriberInterface { - - /** - * The handler object for events. - * - * @var \LakeDrops\Drupal8ScaffoldDeveloper\Handler - */ - protected $handler; +class Plugin extends BasePlugin { /** * The scaffold handler object for events. @@ -33,18 +25,25 @@ class Plugin implements PluginInterface, EventSubscriberInterface { * {@inheritdoc} */ public function activate(Composer $composer, IOInterface $io) { - $this->handler = new Handler($composer, $io); + parent::activate($composer, $io); $this->scaffoldHandler = new DrupalScaffoldHandler($composer, $io); } + /** + * {@inheritdoc} + */ + public function getHandlerClass() { + return Handler::class; + } + /** * {@inheritdoc} */ public static function getSubscribedEvents() { - return array( + return [ ScriptEvents::POST_CREATE_PROJECT_CMD => 'postCreateProject', ScriptEvents::POST_UPDATE_CMD => 'postUpdate', - ); + ]; } /** @@ -73,6 +72,10 @@ class Plugin implements PluginInterface, EventSubscriberInterface { * * @param \Composer\Script\Event $event * The event that triggered the plugin. + * + * @throws \Twig_Error_Loader + * @throws \Twig_Error_Runtime + * @throws \Twig_Error_Syntax */ public static function scaffold(Event $event) { $handler = new Handler($event->getComposer(), $event->getIO()); -- GitLab