#!/bin/bash # # wordpress management script. # BASE="<%= wordpress_folder %>" LOCALE="<%= real_wordpress_locale %>" # 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 [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 [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 -a 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." } # Main procedure if [ -z "$1" ]; then echo "Usage: `basename $0` [arguments]" exit 1 elif [ "$1" == "deploy" ]; then shift wordpress_deploy $* elif [ "$1" == "upgrade" ]; then shift wordpress_upgrade $* fi