From 08203ff768ce29477507b887f4c746e4d4e3a831 Mon Sep 17 00:00:00 2001
From: jurgenhaas <juergen@paragon-es.de>
Date: Thu, 1 Nov 2018 10:46:11 +0100
Subject: [PATCH] Refactor namespace to extend LakeDrops Composer Components

---
 ahoy.yml        |  5 +++++
 composer.json   |  1 +
 src/Handler.php | 45 ++-------------------------------------------
 src/Plugin.php  | 18 ++++--------------
 4 files changed, 12 insertions(+), 57 deletions(-)
 create mode 100644 ahoy.yml

diff --git a/ahoy.yml b/ahoy.yml
new file mode 100644
index 0000000..13a258a
--- /dev/null
+++ b/ahoy.yml
@@ -0,0 +1,5 @@
+ahoyapi: v2
+commands:
+  update:
+    cmd: composer dorgflow "$@"
+    usage: Update DorgFlow setup in project
diff --git a/composer.json b/composer.json
index d6d8977..cf50bfe 100644
--- a/composer.json
+++ b/composer.json
@@ -26,6 +26,7 @@
     "require": {
         "composer-plugin-api": "^1.0.0",
         "cypresslab/gitelephant": "~1.0",
+        "lakedrops/composer-json-utils": "^1.1.0",
         "php": ">=5.6"
     },
     "require-dev": {
diff --git a/src/Handler.php b/src/Handler.php
index 5e365ff..0df2340 100644
--- a/src/Handler.php
+++ b/src/Handler.php
@@ -2,10 +2,9 @@
 
 namespace LakeDrops\DorgFlow;
 
-use Composer\Composer;
-use Composer\IO\IOInterface;
 use Composer\Script\Event;
 use GitElephant\Repository;
+use LakeDrops\Component\Composer\BaseHandler;
 use Symfony\Component\Filesystem\Filesystem;
 
 /**
@@ -13,47 +12,7 @@ use Symfony\Component\Filesystem\Filesystem;
  *
  * @package LakeDrops\DorgFlow
  */
-class Handler {
-
-  /**
-   * The composer object of this session.
-   *
-   * @var \Composer\Composer
-   */
-  protected $composer;
-
-  /**
-   * The input-output object of the composer session.
-   *
-   * @var \Composer\IO\IOInterface
-   */
-  protected $io;
-
-  /**
-   * Handler constructor.
-   *
-   * @param \Composer\Composer $composer
-   *   The composer object of this session.
-   * @param \Composer\IO\IOInterface $io
-   *   The input-output object of the composer session.
-   */
-  public function __construct(Composer $composer, IOInterface $io) {
-    $this->composer = $composer;
-    $this->io = $io;
-  }
-
-  /**
-   * 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 install/update event to prepare projects for development.
diff --git a/src/Plugin.php b/src/Plugin.php
index 56be748..b99f126 100644
--- a/src/Plugin.php
+++ b/src/Plugin.php
@@ -2,30 +2,20 @@
 
 namespace LakeDrops\DorgFlow;
 
-use Composer\Composer;
-use Composer\EventDispatcher\EventSubscriberInterface;
-use Composer\IO\IOInterface;
-use Composer\Plugin\PluginInterface;
 use Composer\Script\Event;
 use Composer\Script\ScriptEvents;
+use LakeDrops\Component\Composer\BasePlugin;
 
 /**
  * Composer plugin for preparing Drupal project for development with dorgflow.
  */
-class Plugin implements PluginInterface, EventSubscriberInterface {
-
-  /**
-   * The handler object to configure the project for dorgflow.
-   *
-   * @var \LakeDrops\DorgFlow\Handler
-   */
-  protected $handler;
+class Plugin extends BasePlugin {
 
   /**
    * {@inheritdoc}
    */
-  public function activate(Composer $composer, IOInterface $io) {
-    $this->handler = new Handler($composer, $io);
+  public function getHandlerClass() {
+    return Handler::class;
   }
 
   /**
-- 
GitLab