-
-
Save billerickson/f7006c311b15a06639773198a8c984b7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
## Functions ################################################################### | |
# Currently available options | |
function options { | |
echo "" | |
echo " Available options:" | |
echo " create" | |
echo " delete" | |
echo " backup" | |
echo " push" | |
echo " pull" | |
echo " When migrating, 1. Push to WPE" | |
echo " When migrating, 2. Pull from WPE" | |
echo "" | |
exit | |
} | |
# Add new site | |
function create_site { | |
# check to see if directory name was give, else ask | |
if [ -z "$OPTION" ]; then | |
# read project directory name | |
echo -n "Site directory name? "; | |
read PROJECTDIR | |
else | |
PROJECTDIR=$OPTION | |
fi | |
# strip spaces | |
PROJECTDIR=${PROJECTDIR//[[:space:]]} | |
# check to make sure directory was given | |
if [ -z "$PROJECTDIR" ]; then | |
echo -e "${TEXTRED}Error:${TEXTRESET} directory name can't be blank." | |
exit | |
fi | |
# check to make sure it doesn't exist already | |
if [ -d "$PROJECTDIR" ] ; then | |
echo -e "${TEXTRED}Error:${TEXTRESET} directory $PROJECTDIR already exists." | |
exit | |
fi | |
# create the directory | |
echo -n "Creating project directory $PROJECTDIR ..." | |
cd ~/Sites/wp.dev/base/wp-content/themes/ea-genesis-child | |
git pull origin master | |
cd ../ea-starter | |
git pull origin master | |
cd ../../plugins/core-functionality | |
git pull origin master | |
wp plugin update --all | |
wp core update | |
cd ../../../../ | |
cp -rpf base $PROJECTDIR | |
cd $PROJECTDIR | |
rm -rf wp-content/themes/ea-genesis-child/.git | |
rm -rf wp-content/themes/ea-starter/.git | |
rm -rf wp-content/plugins/core-functionality/.git | |
echo -e " ${TEXTGREEN}Done${TEXTRESET}" | |
# create database | |
echo -n "Creating MySQL database ..." | |
/Applications/MAMP/Library/bin/mysql --host=localhost -uroot -proot -e "create database dev_$PROJECTDIR"; | |
echo -e " ${TEXTGREEN}Done${TEXTRESET}" | |
# Create wp-config - Enable WP_DEBUG and WP_DEBUG_LOG | |
echo -n "Creating wp-config.php ..." | |
wp config set DB_NAME dev_$PROJECTDIR --type=constant | |
wp config set WP_DEBUG true --type=constant | |
wp config set BE_PUSH_TO production --type=constant | |
wp config set BE_WPE_INSTALL $PROJECTDIR --type=constant | |
wp config set BE_WPE_USER demo --type=constant | |
wp config set BE_WPE_PASSWORD 1234 --type=constant | |
echo -e " ${TEXTGREEN}Done${TEXTRESET}" | |
# Create the WP database tables | |
echo -n "Installing WordPress ..." | |
wp core install --url=http://local/$PROJECTDIR/ --title=WordPress --admin_user=billerickson --admin_email=bill.erickson@gmail.com | |
wp theme activate genesis | |
echo -e " ${TEXTGREEN}Done${TEXTRESET}" | |
# Create users | |
wp user create wpengine bitbucket@wpengine.com --role=administrator --quiet --porcelain | |
# cleanup, confirm, and exit | |
cd .. | |
echo "" | |
echo -e "${TEXTGREEN}Success:${TEXTRESET} site $PROJECTDIR created." | |
echo "" | |
exit | |
} | |
#Backup site | |
function backup_site { | |
# check to see if directory name was give, else ask | |
if [ -z "$OPTION" ]; then | |
# read project directory name | |
echo -n "Site directory name? "; | |
read PROJECTDIR | |
else | |
PROJECTDIR=$OPTION | |
fi | |
# check to make sure directory was given | |
if [ -z "$PROJECTDIR" ]; then | |
echo -e "${TEXTRED}Error:${TEXTRESET} directory name can't be blank." | |
exit | |
fi | |
# check to make sure it exists | |
if [ ! -d "$PROJECTDIR" ]; then | |
echo -e "${TEXTRED}Error:${TEXTRESET} directory $PROJECTDIR doesn't exists." | |
exit | |
fi | |
if [ -z "$OPTION2" ]; then | |
# read project directory name | |
echo -n "Full backup or DB? (full/db) "; | |
read BACKUPTYPE | |
else | |
BACKUPTYPE=$OPTION2 | |
fi | |
if [ $BACKUPTYPE == "full" ]; then | |
echo -n "Creating full backup for site $PROJECTDIR ..." | |
cd $PROJECTDIR; | |
# Create backup placeholder directory | |
mkdir ${PROJECTDIR}-backup | |
# Copy wp-content to backup directory | |
cp -r wp-content ${PROJECTDIR}-backup | |
# Dump DB | |
SQLNAME=`sed -n "s/.*\(['\"]\)DB_NAME\1\s*, \s*\(['\"]\)\(.*\)\2.*/\3/p" wp-config.php` | |
mysqldump $SQLNAME > $PROJECTDIR-db-$CURRENTDATE.sql | |
mv $PROJECTDIR-db-$CURRENTDATE.sql ${PROJECTDIR}-backup | |
# Create backup file | |
tar -czf $PROJECTDIR-$CURRENTDATE.tar.gz ${PROJECTDIR}-backup | |
# Delete backup placeholder directory | |
rm -rf ${PROJECTDIR}-backup | |
# cleanup, confirm, and exit | |
cd .. | |
echo "" | |
echo -e "${TEXTGREEN}Success:${TEXTRESET} full backup for $PROJECTDIR created." | |
echo "" | |
exit | |
elif [ $BACKUPTYPE == "db" ]; then | |
echo -n "Creating database backup for site $PROJECTDIR ..." | |
cd $PROJECTDIR; | |
# Dump DB | |
SQLNAME=`sed -n "s/.*\(['\"]\)DB_NAME\1\s*, \s*\(['\"]\)\(.*\)\2.*/\3/p" wp-config.php` | |
mysqldump $SQLNAME > $PROJECTDIR-db-$CURRENTDATE.sql | |
# cleanup, confirm, and exit | |
cd .. | |
echo "" | |
echo -e "${TEXTGREEN}Success:${TEXTRESET} database backup for $PROJECTDIR created." | |
echo "" | |
exit | |
else | |
echo -e "${TEXTRED}Error:${TEXTRESET} incorrect backup. Select full or db." | |
exit | |
fi | |
} | |
# delete site | |
function delete_site { | |
# check to see if directory name was give, else ask | |
if [ -z "$OPTION" ]; then | |
# read project directory name | |
echo -n "Site directory name? "; | |
read PROJECTDIR | |
else | |
PROJECTDIR=$OPTION | |
fi | |
# check to make sure directory was given | |
if [ -z "$PROJECTDIR" ]; then | |
echo -e "${TEXTRED}Error:${TEXTRESET} directory name can't be blank." | |
exit | |
fi | |
# check to make sure it exists | |
if [ ! -d "$PROJECTDIR" ]; then | |
echo -e "${TEXTRED}Error:${TEXTRESET} directory $PROJECTDIR doesn't exists." | |
exit | |
fi | |
# remove directory | |
echo -n "Removing project directory $PROJECTDIR ..." | |
rm -rf $PROJECTDIR | |
echo -e " ${TEXTGREEN}Done${TEXTRESET}" | |
# remove database | |
echo -n "Deleting MySQL database ..." | |
/Applications/MAMP/Library/bin/mysql --host=localhost -uroot -proot -e "drop database dev_$PROJECTDIR"; | |
echo -e " ${TEXTGREEN}Done${TEXTRESET}" | |
exit | |
} | |
# push copy to WPE | |
function push { | |
# where to push, default is production | |
BRANCH=`sed -n "s/.*\(['\"]\)BE_PUSH_TO\1\s*, \s*\(['\"]\)\(.*\)\2.*/\3/p" wp-config.php` | |
if [ -z "$BRANCH" ]; then | |
BRANCH="production" | |
fi | |
echo -e "Updating GitHub code" | |
git push origin master | |
echo -e "Updating WPE code" | |
git push $BRANCH master | |
echo -e "Updating WPE database and media" | |
wp migratedb profile 1 | |
exit; | |
} | |
# pull copy from WPE | |
function pull { | |
echo -e "Pulling code from GitHub" | |
git pull origin master | |
echo -e "Pulling database and media from WPE" | |
wp migratedb profile 2 | |
echo -e "Checking for missing plugins" | |
wp plugin install-missing | |
exit; | |
} | |
## Start the engine ############################################################ | |
# Colors | |
TEXTRED="\033[31m" | |
TEXTGREEN="\033[32m" | |
TEXTYELLOW="\033[33m" | |
TEXTRESET="\033[0m" | |
CURRENTDATE=$(date +%d-%m-%Y) | |
# If an argument are provided then show help | |
if [ $# -eq 0 ]; then | |
options | |
fi | |
# Send arguments to vars | |
COMMAND=$1 | |
OPTION=$2 | |
OPTION2=$3 | |
# Read first argument and run appropriate functions | |
case "$1" in | |
createsite|create|add) | |
create_site | |
;; | |
backupsite|backup) | |
backup_site | |
;; | |
deletesite|delete) | |
delete_site | |
;; | |
pull) | |
pull | |
;; | |
push) | |
push | |
;; | |
info-migrate) | |
info-migrate | |
;; | |
*) | |
echo -e "${TEXTYELLOW}Whoops, didn't recognize the option provided.${TEXTRESET}" | |
options | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment