#!/bin/bash unameOut="$(uname -s)" case "${unameOut}" in Linux*) machine=Linux;; Darwin*) machine=Mac;; CYGWIN*) machine=Cygwin;; MINGW*) machine=MinGw;; *) machine="UNKNOWN:${unameOut}" esac if [ ${machine} = 'Mac' ]; then OPTS=`/usr/local/bin/getopt -o ngbcDwtdhp: --long name:,git-repo:,branch:,composer-install,install-drush,web-folder:,template:,db-dump:,hash-salt:,db-prefix: -n 'parse-options' -- "$@"` else OPTS=`getopt -o ngbcDwtdhp: --long name:,git-repo:,branch:,composer-install,install-drush,web-folder:,template:,db-dump:,hash-salt:,db-prefix: -n 'parse-options' -- "$@"` fi if [ $? != 0 ] ; then echo "Failed parsing options." >&2 ; exit 1 ; fi eval set -- "${OPTS}" NAME="" GIT_REPO="" BRANCH="develop" COMPOSER_INSTALL=false INSTALL_DRUSH=false WEB_FOLDER="web" TEMPLATE="" DB_DUMP="" HASH_SALT="" DB_PREFIX="" while true; do case "$1" in -n | --name ) case "$2" in "") shift 2 ;; *) NAME=$2 ; shift 2 ;; esac ;; -g | --git-repo ) case "$2" in "") shift 2 ;; *) GIT_REPO=$2 ; shift 2 ;; esac ;; -b | --branch ) case "$2" in "") shift 2 ;; *) BRANCH=$2 ; shift 2 ;; esac ;; -c | --composer-install ) COMPOSER_INSTALL=true; shift ;; -w | --web-folder ) case "$2" in "") shift 2 ;; *) WEB_FOLDER=$2 ; shift 2 ;; esac ;; -t | --template ) case "$2" in "") shift 2 ;; *) TEMPLATE=$2 ; shift 2 ;; esac ;; -d | --db-dump ) case "$2" in "") shift 2 ;; *) DB_DUMP=$2 ; shift 2 ;; esac ;; -h | --hash-salt ) case "$2" in "") shift 2 ;; *) HASH_SALT=$2 ; shift 2 ;; esac ;; -p | --db-prefix ) case "$2" in "") shift 2 ;; *) DB_PREFIX=$2 ; shift 2 ;; esac ;; -- ) shift; break ;; *) echo "Internal error!" ; exit 1 ;; esac done if [ "$NAME" = "" ]; then echo "NAME is missing" exit fi if [ "$GIT_REPO" = "" ]; then echo "GIT_REPO is missing" exit fi if [ "$TEMPLATE" = "" ]; then echo "TEMPLATE is missing" exit fi if [ "$DB_DUMP" = "" ]; then echo "DB_DUMP is missing" exit fi if [ "$HASH_SALT" = "" ]; then echo "HASH_SALT is missing" exit fi if [ "$TEMPLATE" = "drupal8" ]; then SETTINGS_PHP=" '##DB_NAME##', 'username' => '##DB_USER##', 'password' => '##DB_PASSWORD##', 'prefix' => '##DB_PREFIX##', 'host' => '##DB_HOST##', 'port' => '3306', 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', 'driver' => 'mysql', ); \$config['system.file']['path']['temporary'] = '/tmp'; \$settings['install_profile'] = 'minimal'; \$config_directories['sync'] = '../config/sync'; \$settings['file_private_path'] = '##FILES_PRIVATE##'; \$config['config_split.config_split.excluded']['status'] = TRUE; \$config['config_split.config_split.##TYPE##']['status'] = TRUE; \$settings['hash_salt'] = '##HASH_SALT##'; " SETTINGS_PHP_LOCAL="404 Not Found

Not Found

The requested URL \"@path\" was not found on this server.

'; \$databases = array ( 'default' => array ( 'default' => array ( 'database' => '##DB_NAME##', 'username' => '##DB_USER##', 'password' => '##DB_PASSWORD##', 'host' => '##DB_HOST##', 'port' => '', 'driver' => 'mysql', 'prefix' => '##DB_PREFIX##', ), ), ); \$conf['file_temporary_path'] = '/tmp'; \$settings['file_private_path'] = '##FILES_PRIVATE##'; \$conf['theme_debug'] = TRUE; \$drupal_hash_salt = '##HASH_SALT##'; if (file_exists(DRUPAL_ROOT . '/sites/all/modules/domain/settings.inc')) { include DRUPAL_ROOT . '/sites/all/modules/domain/settings.inc'; } " LANDO=" name: ${NAME} recipe: ${TEMPLATE} config: webroot: ${WEB_FOLDER} services: database: type: mysql:5.7 appserver: type: php:5.6 config: conf: docker-config/php.ini " fi # create folder echo '' echo '--------------------------------------------------' echo '---------- Create project directory --------------' echo '--------------------------------------------------' if [ ! -d ${NAME} ]; then mkdir ${NAME} fi cd ${NAME} || exit 1; echo 'Done' # git pull echo '' echo '--------------------------------------------------' echo '---------- Git Pull code -------------------------' echo '--------------------------------------------------' if [ ! -d '.git' ]; then git clone -b ${BRANCH} ${GIT_REPO} . || exit 1 echo 'Done' fi # create lando file echo '' echo '--------------------------------------------------' echo '---------- Init lando ----------------------------' echo '--------------------------------------------------', if [ ! -f docker-config/php.ini ]; then mkdir -p docker-config echo "memory_limit = -1" > docker-config/php.ini fi #if [ ! -f .lando.yml ]; then cat < .lando.yml ${LANDO} EOT lando start || exit 1 #fi echo 'Done' # composer install echo '' echo '--------------------------------------------------' echo '---------- Composer install ----------------------' echo '--------------------------------------------------' if [[ "$TEMPLATE" = "drupal8" && ${COMPOSER_INSTALL} != false ]]; then lando composer install || exit 1 fi #cd ${NAME} # update settings.php echo '' echo '--------------------------------------------------' echo '---------- Settings.php --------------------------' echo '--------------------------------------------------' if [ ! -d ${WEB_FOLDER}/sites/default ]; then mkdir ${WEB_FOLDER}/sites/default && chmod 755 ${WEB_FOLDER}/sites/default || exit 1 fi #if [ ! -f ${WEB_FOLDER}/sites/default/settings.php ]; then # cp ${WEB_FOLDER}/sites/default/default.settings.php ${WEB_FOLDER}/sites/default/settings.php || exit 1 #fi cat < ${WEB_FOLDER}/sites/default/settings.php ${SETTINGS_PHP} EOT if [ "$TEMPLATE" = "drupal8" ]; then cat < ${WEB_FOLDER}/sites/default/settings.local.php ${SETTINGS_PHP_LOCAL} EOT cat < ${WEB_FOLDER}/sites/default/development.services.yml ${SERVICES_DEVELOPPEMENT} EOT fi if [ ${machine} = 'Mac' ]; then sed -i '' -e "s/##DB_NAME##/$TEMPLATE/g" \ -i '' -e "s/##DB_USER##/$TEMPLATE/g" \ -i '' -e "s/##DB_PASSWORD##/$TEMPLATE/g" \ -i '' -e "s/##DB_HOST##/database/g" \ -i '' -e "s/##DB_PREFIX##/$DB_PREFIX/g" \ -i '' -e "s/##TYPE##/dev/g" \ -i '' -e "s/##HASH_SALT##/$HASH_SALT/g" \ -i '' -e "s/##FILES_PRIVATE##/sites\/default\/files_private/g" \ ${WEB_FOLDER}/sites/default/settings.php || exit 1 else sed -i -e "s/##DB_NAME##/$TEMPLATE/g" \ -e "s/##DB_USER##/$TEMPLATE/g" \ -e "s/##DB_PASSWORD##/$TEMPLATE/g" \ -e "s/##DB_HOST##/database/g" \ -e "s/##DB_PREFIX##/$DB_PREFIX/g" \ -e "s/##TYPE##/dev/g" \ -e "s/##HASH_SALT##/$HASH_SALT/g" \ -e "s/##FILES_PRIVATE##/sites\/default\/files_private/g" \ ${WEB_FOLDER}/sites/default/settings.php || exit 1 fi echo 'Done' # create files && files_private folder && chmod echo '' echo '--------------------------------------------------' echo '---------- Files directory -----------------------' echo '--------------------------------------------------' if [ ! -d ${WEB_FOLDER}/sites/default/files ]; then mkdir ${WEB_FOLDER}/sites/default/files && chmod 777 ${WEB_FOLDER}/sites/default/files || exit 1 fi if [ ! -d ${WEB_FOLDER}/sites/default/files_private ]; then mkdir ${WEB_FOLDER}/sites/default/files_private && chmod 777 ${WEB_FOLDER}/sites/default/files_private || exit 1 fi echo 'Done' # import database echo '' echo '--------------------------------------------------' echo '---------- Import database -----------------------' echo '--------------------------------------------------' curl -o db-dump-file.sql.gz ${DB_DUMP} && echo 'curl ok' && lando db-import db-dump-file.sql.gz --verbose && echo 'import ok' && rm db-dump-file.sql.gz && echo 'delete ok' echo 'Done' lando info