From 2b1870f0c68a0f6a57c2409e7415c231977066b4 Mon Sep 17 00:00:00 2001
From: jurgenhaas <juergen@paragon-es.de>
Date: Sat, 4 Nov 2017 17:04:30 +0100
Subject: [PATCH] #10 Determine theme name even for initial installation and
 write that back to composer.json

---
 composer.json   |  2 ++
 src/Handler.php | 18 ++++++++++++++++--
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/composer.json b/composer.json
index feccd41..1bddea1 100644
--- a/composer.json
+++ b/composer.json
@@ -63,6 +63,8 @@
         "drupal/chosen": "^2.4",
         "drupal/coder": "^8.2",
         "harvesthq/chosen": "^1.8",
+        "lakedrops/composer-json-tools": "^0.1",
+        "lakedrops/dotenv": "^0.1",
         "matthiasmullie/path-converter": "^1.0"
     },
     "minimum-stability": "dev",
diff --git a/src/Handler.php b/src/Handler.php
index 27100dc..a7c8055 100644
--- a/src/Handler.php
+++ b/src/Handler.php
@@ -6,9 +6,11 @@ use Composer\Package\Package;
 use Composer\Composer;
 use Composer\IO\IOInterface;
 use Composer\Script\Event;
+use LakeDrops\Component\Composer\Utils;
+use LakeDrops\Component\Dotenv\Dotenv;
+use MatthiasMullie\PathConverter\Converter;
 use Symfony\Component\Filesystem\Filesystem;
 use Symfony\Component\Finder\Finder;
-use MatthiasMullie\PathConverter\Converter;
 
 /**
  * Class Handler.
@@ -182,7 +184,6 @@ class Handler {
       $extra = $this->composer->getPackage()
         ->getExtra() + ['theme-d8-sass' => []];
       $this->options = array_replace_recursive([
-        'project_name' => 'mytheme',
         'base_theme' => [
           'name' => 'bartik',
           'import' => [],
@@ -190,6 +191,19 @@ class Handler {
         'bower_assets' => [],
       ], $extra['theme-d8-sass']);
 
+      // If we don't have a project name by now, lets get some magic at work.
+      if (empty($this->options['project_name'])) {
+        $defaultName = str_replace([' ', '-', '_', '.'], '', basename(getcwd())) . '_theme';
+        $env = new Dotenv('custom_theme', $this->io);
+        $this->options['project_name'] = $env->receive('name', 'Name of custom theme', $defaultName);
+      }
+
+      // Update composer.jon if necessary.
+      $composerUtils = new Utils($this->composer);
+      $composerUtils
+        ->setSubSection('extra', 'theme-d8-sass', $this->options)
+        ->write();
+
       $fs = new Filesystem();
 
       $dependencies = [];
-- 
GitLab