#!/bin/bash # # Mediawiki upgrader. # # Config parameters BASENAME="`basename $0`" RELEASES="http://releases.wikimedia.org/mediawiki/" # Sudo config if [ "`whoami`" != 'root' ]; then sudo="sudo" fi # Deploy function mediawiki_deploy { VERSION="$1" MAJOR_VERSION="`echo $VERSION | cut -d . --fields=1,2`" TARBALL="mediawiki-$VERSION.tar.gz" # Version check if [ -z "$VERSION" ]; then echo "usage: $BASENAME deploy " exit 1 elif [ -d "mediawiki-$VERSION" ]; then echo "mediawiki-$VERSION already installed." exit fi $sudo wget -c $RELEASES/$MAJOR_VERSION/$TARBALL || exit 1 $sudo wget -c $RELEASES/$MAJOR_VERSION/$TARBALL.sig || exit 1 gpg --verify $TARBALL.sig $TARBALL # Use --no-same-owner ensures tar doesn't fail if # extracting to a file system that doesn't accept # ownership change $sudo tar --no-same-owner -xvf $TARBALL || exit 1 # In some filesystems we won't be able to change ownership, so # that's why we're ignoring errors $sudo chown -R root: mediawiki-$VERSION &> /dev/null $sudo rm $TARBALL* $sudo ln -sf mediawiki-$VERSION mediawiki } # Upgrade function mediawiki_upgrade { OLD_VERSION="$1" VERSION="$2" # Version check if [ -z "$VERSION" ]; then echo "usage: $BASENAME upgrade " exit 1 elif [ -d "mediawiki-$VERSION" ]; then echo "mediawiki-$VERSION already installed." exit elif [ ! -d "mediawiki-$OLD_VERSION" ]; then echo "error: mediawiki-$OLD_VERSION is not installed, aborting." exit 1 fi # Deploy mediawiki_deploy $VERSION # Copy configuration $sudo cp -a mediawiki-$OLD_VERSION/LocalSettings*.php mediawiki-$VERSION/ # Contrib extensions if [ -d "mediawiki-$OLD_VERSION/contrib" ]; then $sudo cp -a mediawiki-$OLD_VERSION/contrib mediawiki-$VERSION/ # Symlink extensions for extension in `ls mediawiki-$OLD_VERSION/extensions`; do if [ -h "mediawiki-$OLD_VERSION/extensions/$extension" ]; then $sudo cp -ar mediawiki-$OLD_VERSION/extensions/$extension mediawiki-$VERSION/extensions/ fi done fi # Audit echo "Audit:" du -hs mediawiki-$OLD_VERSION du -hs mediawiki-$VERSION } # Main if [ -z "$1" ]; then echo "Usage: $BASENAME [arguments]" exit 1 elif [ "$1" == "deploy" ]; then shift mediawiki_deploy $* elif [ "$1" == "upgrade" ]; then shift mediawiki_upgrade $* else echo "No action $1" exit 1 fi