From e3cbc41ffa9cb37a9729b95ff0123e1955e4154b Mon Sep 17 00:00:00 2001
From: jurgenhaas <juergen@paragon-es.de>
Date: Mon, 6 Jul 2020 12:56:22 +0200
Subject: [PATCH] Work with the explicit composer.spoon.json file and keep the
 project's original composer.json untouched Provide a bash script to prepare
 local environment

---
 prepareLocally.sh |  9 +++++++++
 src/Handler.php   | 14 ++++++++++----
 2 files changed, 19 insertions(+), 4 deletions(-)
 create mode 100755 prepareLocally.sh

diff --git a/prepareLocally.sh b/prepareLocally.sh
new file mode 100755
index 0000000..183effe
--- /dev/null
+++ b/prepareLocally.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+COMPOSER=composer.spoons.json
+export COMPOSER
+
+composer require --dev lakedrops/drupal-spoons:dev-master composer/installers:^1
+composer drupalspoons:prepare
+composer drupalspoons:configure
+composer update --dev
diff --git a/src/Handler.php b/src/Handler.php
index 2fe7d75..4cb2557 100644
--- a/src/Handler.php
+++ b/src/Handler.php
@@ -48,20 +48,26 @@ class Handler {
     $fs = new Filesystem();
     $projectRoot = getcwd();
 
+    $composerJson = getenv('COMPOSER');
+    if (empty($composerJson)) {
+      $this->io->writeError('The environment variable COMPOSER is not set, aborting!');
+      return;
+    }
+    $composerLock = str_replace('.json', '.lock', $composerJson);
+
     // Append DrupalSpoon related components to composer.json.
     $content = $this->defaultSettings();
-    foreach (['composer.disabled.json', 'composer.json'] as $file) {
+    foreach ([$composerJson, 'composer.json'] as $file) {
       $jsonFile = new JsonFile($projectRoot . '/' . $file);
       if ($jsonFile->exists()) {
         $content = NestedArray::mergeDeep($content, $jsonFile->read());
-        $fs->remove($projectRoot . '/' . $file);
       }
     }
-    $jsonFile = new JsonFile($projectRoot . '/composer.json');
+    $jsonFile = new JsonFile($projectRoot . '/' . $composerJson);
     $jsonFile->write($content);
 
     // Add some patterns to .gitignore.
-    foreach (['/vendor/', '/web/', '.env'] as $item) {
+    foreach ([$composerJson, $composerLock, '/vendor/', '/web/', '.env'] as $item) {
       exec('git ignore ' . $item);
     }
   }
-- 
GitLab