Created
March 8, 2014 22:57
-
-
Save mkay/9440302 to your computer and use it in GitHub Desktop.
MODX CLI updater
This file contains hidden or 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 | |
######################################################## | |
# | |
# MODX (modx.com) CLI updater | |
# Kreuder 20140308 [email protected] | |
# | |
######################################################## | |
# | |
# Description: perform a MODX Basic Upgrade via CLI. | |
# | |
######################################################## | |
# | |
# This script will run a MODX Basic Upgrade via CLI. (see http://bit.ly/1fcyisI for more) | |
# Either from a static local source directory or -if not provided- it will download the latest release from modx.com. | |
# | |
# Usage: | |
# update-modx.sh /path/to/your/modx/install/ | |
# | |
# This is an EXPERIMENTAL script. Modify it according to your needs. | |
# MAKE A BACKUP of your installation -both web and database- before running. | |
# DO NOT RUN without knowing what you are doing. It does 'things'. | |
# | |
# | |
# MODX is a registered trademark of MODX, LLC | |
# | |
######################################################## | |
# do we have a static source? (path to an unzipped MODX download). If empty we will d/l the latest version from modx.com. | |
SOURCE='' | |
# set the default manager language. Use IANA codes. (see http://bit.ly/1fcyisI for more) | |
CONFIG_LANG='en' | |
# script arguments | |
SCRIPTSELF=`basename $0` | |
TARGET=${1%/} | |
# do we have a writable target directory? | |
if [ -z "$TARGET" -a "${TARGET+nada}" = "nada" ]; then echo "We need a target directory. (eg: '${SCRIPTSELF} /var/www/htdocs/') Aborting."; exit 1; fi | |
if [ -d "$TARGET" -a -w "$TARGET" ]; | |
then | |
# no source directory set - we will d/l a copy of MODX | |
if [ -z "$SOURCE" ]; | |
then | |
# we need wget for grabbing the latest version of MODX. Make sure we have it. | |
command -v wget >/dev/null 2>&1 || { echo >&2 "We need 'wget' for this but it's not installed. Aborting."; exit 1; } | |
# we need unzip for extracting the downloaded .zip. Make sure we have it. | |
command -v wget >/dev/null 2>&1 || { echo >&2 "We need 'unzip' for this but it's not installed. Aborting."; exit 1; } | |
# ensure a correct /path/to/our/prerequisites. | |
WGET=$(command -v wget) | |
UNZIP=$(command -v unzip) | |
# d/l MODX' latest | |
cd $TARGET | |
$WGET -O latest.zip http://modx.com/download/latest | |
# unzip it to a temporary directory | |
TMPDIR=TMP_${RANDOM} | |
mkdir $TARGET/${TMPDIR} | |
$UNZIP latest.zip -d ./${TMPDIR} | |
# cd to the d/l source dir | |
cd ./${TMPDIR}/modx* | |
else | |
# cd to the static source dir | |
cd $SOURCE | |
fi | |
# apply update (means: OVERWRITE the old installation) | |
cp -rf ./* $TARGET | |
# adjust permissions, in case we ran this as root | |
USER=`stat -c '%U' $TARGET` # get target's user | |
GROUP=`stat -c '%G' $TARGET` # get target's group | |
chown -R $USER:$GROUP $TARGET # chown recursively | |
# prepare config.xml for MODX command line update | |
sed -i "s#<language>en</language>#<language>${CONFIG_LANG}</language>#g" ${TARGET}/setup/config.dist.upgrade.xml | |
sed -i "s#/www/modx/core/#${TARGET}/core/#g" ${TARGET}/setup/config.dist.upgrade.xml | |
# run MODX command line update | |
PHP=$(command -v php) | |
cd ${TARGET}/setup | |
$PHP ./index.php --installmode=upgrade --config=${TARGET}/setup/config.dist.upgrade.xml | |
# clean up | |
if [ -z "$SOURCE" ]; | |
then | |
cd $TARGET | |
rm -f ./latest.zip # remove the .zip | |
rm -rf $TMPDIR # remove the tmp dir | |
fi | |
else | |
echo $TARGET "either doesn't exist or is not writable. Aborting."; | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment