usage() {
cat <<EOF
-usage: drin $(basename $0 .sh) [--devel|-h|--help]
+usage: drin $(basename "$0" .sh) [--devel|--overwrite-profile|-h|--help]
Bootstrap a Drupal project, using settings from a 'bootstrap.conf' file.
Options:
- --devel install drupal/devel and use a settings.local.php file
- -h, --help display this usage message and exit
+ --devel install drupal/devel and use a settings.local.php file
+ --overwrite-profile allow overwriting the current installation profile
+ -h, --help display this usage message and exit
EOF
}
--devel)
DEVEL_MODE="true"
;;
+ --overwrite-profile)
+ OVERWRITE_PROFILE="true"
+ ;;
-*)
echo "Error: Unknown option '${1}'" 1>&2
;;
shift
done
+[ -f "bootstrap.conf" ] || { echo "Aborting, run this command from the Drupal project directory." 1>&2; exit 1; }
+
+# shellcheck disable=SC1091
. bootstrap.conf
declare -p DB_NAME
if [ "x$MYSQL_ROOT_PASSWORD" = "x" ];
then
- read -s -p "MySQL root password: " MYSQL_ROOT_PASSWORD
+ read -r -s -p "MySQL root password: " MYSQL_ROOT_PASSWORD
echo
fi
-SITE_LOCAL_PATH="${PWD}/web"
+WEB_ROOT="${PWD}/web"
command -v composer &> /dev/null || { echo "Aborting, 'composer' not available." 1>&2; exit 1; }
command -v git &> /dev/null || { echo "Aborting, 'git' not available." 1>&2; exit 1; }
-[ -d "$SITE_LOCAL_PATH" ] || composer install
+[ -d "$WEB_ROOT" ] || composer install
DRUSH="${PWD}/vendor/bin/drush"
DRUPAL_CONSOLE="${PWD}/vendor/bin/drupal"
# This becomes unnecessary if the installation profile gets pulled in by
# composer.json, like suggested in
# https://github.com/drupal-composer/drupal-project/issues/249
-if ! echo $INSTALLATION_PROFILE | egrep -q "^(minimal|standard)$";
+if ! echo "$INSTALLATION_PROFILE" | grep -q -E "^(minimal|standard)$";
then
- if [ -d $SITE_LOCAL_PATH/profiles/$INSTALLATION_PROFILE ];
+ if [ -d "${WEB_ROOT}/profiles/${INSTALLATION_PROFILE}" ] && [ "$OVERWRITE_PROFILE" != "true" ];
then
- echo "Installation profile '$INSTALLATION_PROFILE' already there."
+ echo "Installation profile '$INSTALLATION_PROFILE' already there." 1>&2
+ echo "Use --overwrite-profile to copy over it." 1>&2
+ exit 1
else
- cp -a $INSTALLATION_PROFILE $SITE_LOCAL_PATH/profiles
+ cp -a "$INSTALLATION_PROFILE" "${WEB_ROOT}/profiles"
fi
fi
-pushd "$SITE_LOCAL_PATH"
-
-chmod 755 sites/default
-chmod 644 sites/default/settings.php
+pushd "$WEB_ROOT"
# Update the install_profile if it's already there
if grep -q "^\\\$settings\['install_profile'\] =" sites/default/settings.php;
then
+ chmod 755 sites/default
+ chmod 644 sites/default/settings.php
sed -i -e "s/^\(\$settings\['install_profile'\]\) = '[^']*';/\1 = '$INSTALLATION_PROFILE';/g" sites/default/settings.php
+ chmod 444 sites/default/settings.php
+ chmod 555 sites/default
fi
$DRUSH --verbose --yes \
# Enables clean URLs
sed -i "s@# RewriteBase /drupal\$@RewriteBase ${SITE_BASE_PATH}@" .htaccess
+chmod 755 sites/default
+chmod 644 sites/default/settings.php
+
# Add some basic settings to settings.php
if ! grep -q "^\\\$settings\['trusted_host_patterns'\] =" sites/default/settings.php;
then
composer --working-dir=../ require drupal/devel
$DRUSH --yes en devel
- cp sites/example.settings.local.php sites/default/settings.local.php
+ if [ ! -e sites/default/settings.local.php ];
+ then
+ cp sites/example.settings.local.php sites/default/settings.local.php
- # Disable some overly permissive settings
- sed -i -e "s/^\(\$settings\['rebuild_access'\]\).*$/\1 = FALSE;/g" sites/default/settings.local.php
- sed -i -e "s/^\(\$settings\['skip_permissions_hardening'\]\).*$/\1 = FALSE;/g" sites/default/settings.local.php
+ # Disable some overly permissive settings
+ sed -i -e "s/^\(\$settings\['rebuild_access'\]\).*$/\1 = FALSE;/g" sites/default/settings.local.php
+ sed -i -e "s/^\(\$settings\['skip_permissions_hardening'\]\).*$/\1 = FALSE;/g" sites/default/settings.local.php
- chmod 444 sites/default/settings.local.php
+ chmod 444 sites/default/settings.local.php
+ fi
if ! grep -q "^include \$app_root . '/' . \$site_path . '/settings.local.php';" sites/default/settings.php;
then