From 42a28da50e0449588c3161e9e3bc299b65dc05c9 Mon Sep 17 00:00:00 2001
From: jurgenhaas <juergen@paragon-es.de>
Date: Sun, 8 Sep 2019 17:40:00 +0200
Subject: [PATCH] customer/bison/core#3 Improve automation such that L3D does
 all the initial site setup if the required parameters are available

---
 start.sh | 75 ++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 65 insertions(+), 10 deletions(-)

diff --git a/start.sh b/start.sh
index dfb1602..bc77721 100755
--- a/start.sh
+++ b/start.sh
@@ -1,9 +1,13 @@
 #!/bin/bash
 
-function truncateCurrentDirectory {
+function readEnv {
   if [[ -f ".env" ]]; then
     export $(cat .env | xargs) > /dev/null 2>&1
   fi
+}
+
+function truncateCurrentDirectory {
+  readEnv
   rm .* > /dev/null 2>&1
 }
 
@@ -21,19 +25,54 @@ function restoreEnvFile {
 
 function create {
   truncateCurrentDirectory
-  composer create-project ${PROJECT} . --no-interaction
+  if [[ -n ${REPOSITORY} ]]; then
+    composer create-project ${PROJECT} . --no-interaction --repository ${REPOSITORY}
+  else
+    composer create-project ${PROJECT} . --no-interaction
+  fi
   restoreEnvFile
+
+  if [[ -f "docker-compose.yml" ]]; then
+    if [[ -f "web/profiles/contrib/config_installer/config_installer.info.yml" ]]; then
+      # Start container
+      a d4d up
+      drush --no-interaction si config_installer
+
+      # Init site config values
+      if [[ -f "drush/Commands/init_site/init_site.info.yml" ]]; then
+        if [[ -f ".init_site.json" ]]; then
+          drush init_site ../.init_site.json
+        fi
+      fi
+
+      # Dump database
+      if [[ -n ${L3D_DUMP_DB} ]]; then
+        git ignore "/*.sql"
+        drush sql:dump --result-file ../db.sql
+      fi
+    fi
+  fi
+  if [[ -n ${L3D_EXIT} ]]; then
+    exit
+  fi
 }
 
-EXISTING=$(ls -1)
-if [[ ! -n "$EXISTING" ]]; then
+function clone {
+  truncateCurrentDirectory
+  git clone ${REPOSITORY} .
+  composer update
+  restoreEnvFile
+}
+
+function initialSetup {
   echo "Lets start a new project here ..."
   echo ""
   echo "Options to start:"
   echo "    0   none: start with an empty container"
   echo "    1   LakeDrops Drupal 8 project template"
   echo "    2   Drupal's community project template"
-  echo "    3   Existing git repository"
+  echo "    3   Custom project template"
+  echo "    4   Existing git repository"
   echo ""
   echo ""
 
@@ -41,6 +80,7 @@ if [[ ! -n "$EXISTING" ]]; then
       read -p "Choose an option: " OPTION
       case ${OPTION} in
           0 )
+            restoreEnvFile
             break
             ;;
 
@@ -57,12 +97,16 @@ if [[ ! -n "$EXISTING" ]]; then
             ;;
 
           3 )
+            read -p "Custom project template: " PROJECT
+            read -p "Repository URL (optional): " REPOSITORY
+            create
+            break
+            ;;
+
+          4 )
             read -p "Repository URL: " REPOSITORY
             if [[ -n "${REPOSITORY}" ]]; then
-              truncateCurrentDirectory
-              git clone ${REPOSITORY} .
-              composer update
-              restoreEnvFile
+              clone
               break
             fi
             ;;
@@ -72,9 +116,20 @@ if [[ ! -n "$EXISTING" ]]; then
             ;;
       esac
   done
+}
+
+readEnv
+EXISTING=$(ls -1)
+if [[ ! -n "$EXISTING" ]]; then
+  if [[ -n ${PROJECT} ]]; then
+    create
+  elif [[ -n ${REPOSITORY} ]]; then
+    clone
+  else
+    initialSetup
+  fi
 fi
 
-restoreEnvFile
 if [[ -x "${L3DSHELL}" ]]; then
   ${L3DSHELL}
 else
-- 
GitLab