From 5d030e9e1fddb21468c74e44079f0874ba83e7d3 Mon Sep 17 00:00:00 2001
From: jurgenhaas <juergen@paragon-es.de>
Date: Sat, 29 Sep 2018 11:06:13 +0200
Subject: [PATCH] Explicitly download scaffold for Drupal core through
 drupal-composer/drupal-scaffold

---
 composer.json  |  1 +
 src/Plugin.php | 21 +++++++++++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/composer.json b/composer.json
index 10410f5..bcf0917 100644
--- a/composer.json
+++ b/composer.json
@@ -32,6 +32,7 @@
         "composer-plugin-api": "^1.0.0",
         "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3",
         "drupal-code-builder/drupal-code-builder-drush": "^9.0",
+        "drupal-composer/drupal-scaffold": "^2.3",
         "drupal/coder": "^8.2",
         "lakedrops/behat4drupal": "^1.0.0",
         "lakedrops/composer-scripts": "^1.0.0",
diff --git a/src/Plugin.php b/src/Plugin.php
index f27a91c..5d9b076 100644
--- a/src/Plugin.php
+++ b/src/Plugin.php
@@ -8,6 +8,7 @@ use Composer\IO\IOInterface;
 use Composer\Plugin\PluginInterface;
 use Composer\Script\Event;
 use Composer\Script\ScriptEvents;
+use DrupalComposer\DrupalScaffold\Handler as DrupalScaffoldHandler;
 
 /**
  * Composer plugin for handling drupal scaffold.
@@ -21,11 +22,19 @@ class Plugin implements PluginInterface, EventSubscriberInterface {
    */
   protected $handler;
 
+  /**
+   * The scaffold handler object for events.
+   *
+   * @var \DrupalComposer\DrupalScaffold\Handler
+   */
+  protected $scaffoldHandler;
+
   /**
    * {@inheritdoc}
    */
   public function activate(Composer $composer, IOInterface $io) {
     $this->handler = new Handler($composer, $io);
+    $this->scaffoldHandler = new DrupalScaffoldHandler($composer, $io);
   }
 
   /**
@@ -34,6 +43,7 @@ class Plugin implements PluginInterface, EventSubscriberInterface {
   public static function getSubscribedEvents() {
     return array(
       ScriptEvents::POST_CREATE_PROJECT_CMD => 'postCreateProject',
+      ScriptEvents::POST_UPDATE_CMD => 'postUpdate',
     );
   }
 
@@ -44,9 +54,20 @@ class Plugin implements PluginInterface, EventSubscriberInterface {
    *   The event that triggered the plugin.
    */
   public function postCreateProject(Event $event) {
+    $this->scaffoldHandler->downloadScaffold();
     $this->handler->setupLakeDropsProject($event);
   }
 
+  /**
+   * Post update event callback.
+   *
+   * @param \Composer\Script\Event $event
+   *   The event that triggered the plugin.
+   */
+  public function postUpdate(Event $event) {
+    $this->scaffoldHandler->downloadScaffold();
+  }
+
   /**
    * Callback to setup the project.
    *
-- 
GitLab