dev/toolbox/new.sh
2024-02-19 12:25:53 +02:00

164 lines
4.0 KiB
Bash
Executable File

#!/bin/bash
#
# Create new Drupal installation
# + database
# + database user
#
RED="\e[0;31m"
GRN="\e[0;32m"
BLU="\e[0;34m"
WHT="\e[0;97m"
BOLDRED="\e[1;31m"
BOLDGRN="\e[1;32m"
BOLDBLU="\e[1;34m"
BOLDWHT="\e[1;97m"
END="\e[00m"
DBUSER="root"
DBPASS="1234"
NAME=$1
function ok() {
echo -e "${BOLDGRN} [ OK ]${END}"
}
function fail() {
echo -e "${BOLDRED} [FAIL]${END}"
echo
exit
}
echo
echo -ne " 💧 Create new drupal in dir ${WHT}$NAME${END} ..."
composer --no-interaction create-project drupal/recommended-project $NAME
# CMD="composer --no-interaction create-project drupal/recommended-project $NAME"
# sudo su -l apache -s /bin/bash -c "$CMD"
# sudo su -l apache -s /bin/bash -c "cd $PWD; $CMD"
# composer --no-interaction create-project drupal/recommended-project:9.5.10 $NAME > /dev/null 2>&1
#CMD="composer --no-interaction create-project drupal/recommended-project:9 $NAME > /dev/null 2>&1"
#CMD="composer create-project drupal/recommended-project:9 $NAME"
if [ $? = 0 ]; then ok; else fail; fi
echo -ne " 🐬 Create database ${WHT}$NAME${END} ..."
mysql -uroot -p1234 -e "CREATE DATABASE $NAME"
if [ $? = 0 ]; then ok; else fail; fi
echo -ne " 🐬 Create database user ${WHT}$NAME${END} with password '1234' ..."
mysql -uroot -p1234 -e "CREATE USER $NAME@localhost IDENTIFIED BY \"1234\""
if [ $? = 0 ]; then ok; else fail; fi
echo -ne " 🐬 Grand user ${WHT}${NAME}${END} permissions to database ${WHT}${NAME}${END} ..."
mysql -uroot -p1234 -e "GRANT ALL ON $NAME.* TO $NAME@localhost"
if [ $? = 0 ]; then ok; else fail; fi
echo -ne " 🐬 Flush privilages ..."
mysql -uroot -p1234 -e "FLUSH PRIVILEGES"
if [ $? = 0 ]; then ok; else fail; fi
echo -ne " 🍒 Drupal settings.php"
cd $NAME/web
# cp sites/default/default.settings.php sites/default/settings.php
# cat >> sites/default/settings.php <<EOL
# \$databases['default']['default'] = array (
# 'database' => '$NAME',
# 'username' => '$NAME',
# 'password' => '1234',
# 'prefix' => '',
# 'host' => 'localhost',
# 'port' => '3306',
# 'namespace' => 'Drupal\\\\mysql\\\\Driver\\\\Database\\\\mysql',
# 'driver' => 'mysql',
# 'autoload' => 'core/modules/mysql/src/Driver/Database/mysql/',
# );
# EOL
# if [ $? = 0 ]; then ok; else fail; fi
echo -ne " 🐷 Change files owner to user ${WHT}apache${END}"
mkdir sites/default/files
cd ../..
chown apache:apache $NAME -R
find $NAME -type d -exec chmod 755 {} \;
find $NAME -type f -exec chmod 644 {} \;
if [ $? = 0 ]; then ok; else fail; fi
#echo -ne " 🍒 link html to ${WHT}$NAME${END}"
#unlink /var/www/html
#ln -s /var/www/sites/$NAME/web /var/www/html
#if [ $? = 0 ]; then ok; else fail; fi
echo
ls -l --color=auto /var/www/site[1234567890]
echo
# echo -ne " 🌈 Restart httpd "
# systemctl restart httpd
# if [ $? = 0 ]; then ok; else fail; fi
#
# echo -ne " 🌈 Restart php "
# systemctl restart php-fpm
# if [ $? = 0 ]; then ok; else fail; fi
#
# echo -ne " 🌈 Restart mysql "
# systemctl restart mysql
# if [ $? = 0 ]; then ok; else fail; fi
echo
echo -e "Finish the installation..."
echo
echo -e "Database: ${NAME}"
echo -e "Username: ${NAME}"
echo -e "Password: 1234"
echo
read -p "...and press [ENTER] to continue installing extra modules"
echo
echo -e "🍓"
function rest() {
drush en serialization
drush en rest
composer require 'drupal/restui:^1.21'
drush en restui
composer require 'drupal/rest_views:^2.0'
drush en rest_views
}
echo -en "Enable module ${R}rest${E} (y/n): "
read -n 1 answer
[ $answer = "y" ] && rest
echo
function rest() {
drush en jsonapi
}
echo -en "Enable module ${R}rest${E} (y/n): "
read -n 1 answer
[ $answer = "y" ] && jsonapi
echo
# composer require 'drupal/rpb:^1.0@beta'
#composer require 'drupal/decoupled_rest_views:^1.0@alpha'
#composer require 'drupal/entity_rest_extra:^2.1'
#composer require 'drupal/rest_entity_recursive:^2.0@RC'
# Devel
# composer require 'drupal/devel'
# rm -rf vendor/autoload.php vendor/autoload_runtime.php vendor/composer
# composer install
# drush cr
# drush en devel_generate