diff options
Diffstat (limited to 'files')
-rw-r--r-- | files/wordpress.sh | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/files/wordpress.sh b/files/wordpress.sh new file mode 100644 index 0000000..773eab7 --- /dev/null +++ b/files/wordpress.sh @@ -0,0 +1,160 @@ +#!/bin/bash +# +# wordpress management script. +# + +BASE="/var/www/data" +LOCALE="-pt_BR" +WP_CLI="/usr/local/bin/wp-cli" +BASENAME="`basename $0`" + +# Set alternative base +function wordpress_set_base { + if [ ! -z "$1" ]; then + BASE="$1" + + if [ ! -d "$BASE" ]; then + echo "No such folder $BASE" + exit 1 + fi + fi +} + +# Check for existing installations +function wordpress_check_existing { + if [ -e "$BASE/wordpress-$1" ]; then + echo "Folder $BASE/wordpress-$1 already exists, skipping." + exit 1 + fi +} + +# Deploy a fresh wordpress tree +function wordpress_deploy { + if [ -z "$1" ]; then + echo "Usage: `basename $0` deploy <version> [folder]" + exit 1 + fi + + # Setup + new="$1" + wordpress_set_base $2 + wordpress_check_existing $new + + # Deploy a fresh wordpress tree + cd $BASE + wget http://br.wordpress.org/wordpress-$new$LOCALE.zip + unzip wordpress-$new$LOCALE.zip && rm wordpress-$new$LOCALE.zip + mv wordpress wordpress-$new/ + chown -R root.root wordpress-$new/ +} + +# Upgrade a wordpress instance using upstream source. +function wordpress_upgrade { + if [ -z "2" ]; then + echo "Usage: `basename $0` upgrade <old_version> <new_version> [folder]" + exit 1 + fi + + # Setup + old="$1" + new="$2" + extra_folders="" + wordpress_set_base $3 + wordpress_check_existing $new + + cd $BASE + + if [ ! -d "wordpress-$old" ]; then + echo "Installation not found: wordpress-$old" + exit + fi + + cp -alf wordpress-$old wordpress-$old.backup + + # Deploy a fresh wordpress tree + wordpress_deploy $new + + # Copy files + for file in .htaccess wp-config.php; do + if [ -e "wordpress-$old/$file" ]; then + cp -a wordpress-$old/$file wordpress-$new/ + fi + done + + # Extra folders + for extra_folder in $extra_folders; do + if [ -d ../wordpress-$old/$extra_folder ]; then + cp -Rp ../wordpress-$old/$extra_folder . + fi + done + + # Files + rsync -av wordpress-$old/wp-content/uploads/ wordpress-$new/wp-content/uploads/ + rsync -av wordpress-$old/wp-content/blogs.dir/ wordpress-$new/wp-content/blogs.dir/ + + # Plugins + for plugin in `ls wordpress-$old/wp-content/plugins/`; do + if [ ! -e "wordpress-$new/wp-content/plugins/$plugin" ]; then + cp -r wordpress-$old/wp-content/plugins/$plugin wordpress-$new/wp-content/plugins/ + fi + done + + # Themes + for theme in `ls wordpress-$old/wp-content/themes/`; do + if [ ! -e "wordpress-$new/wp-content/themes/$theme" ]; then + cp -r wordpress-$old/wp-content/themes/$theme wordpress-$new/wp-content/themes/ + fi + done + + # Fix permissions + chown -R root.root wordpress-$new/wp-content/{plugins,themes} + + # Set sunrise symlink + if [ -f "wordpress-$new/wp-content/plugins/wordpress-mu-domain-mapping/sunrise.php" ]; then + ( cd wordpress-$new/wp-content && ln -s plugins/wordpress-mu-domain-mapping/sunrise.php ) + fi + + # Change symlink to point to the new location + if [ -h "site" ]; then + link="`readlink site`" + if [ "`basename $link`" == "wordpress-$old" ]; then + rm site && ln -s wordpress-$new site + fi + fi + + # Done + echo "Audit: `du -hs wordpress-$old`" + echo "Audit: `du -hs wordpress-$new`" + echo "Check procedure and remove wordpress-$old once you make sure that everything is fine." + echo "Then run 'wordpress core update-db'" +} + +# Usage +function wordpress_usage { + echo "Installation management commands:" + echo " $BASENAME deploy <version>" + echo " $BASENAME upgrade <old-version> <new-version>" + echo "" + echo -n "Wordpress CLI " + $WP_CLI help +} + +# Main procedure +if [ -z "$1" ]; then + wordpress_usage + exit 1 +elif [ "$1" == "deploy" ]; then + shift + wordpress_deploy $* +elif [ "$1" == "upgrade" ]; then + shift + wordpress_upgrade $* +elif [ "$1" == "help" ]; then + wordpress_usage +#elif [ "$1" == "core" ]; then +# echo "Please use deploy or upgrade instead." +else + # Send all other requests to wp-cli + #$WP_CLI --path=$BASE/wordpress $* + $WP_CLI $* +fi |