Skip to content

Instantly share code, notes, and snippets.

@sdouglas
Created July 30, 2012 20:19
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sdouglas/3209835 to your computer and use it in GitHub Desktop.
Save sdouglas/3209835 to your computer and use it in GitHub Desktop.
Runs mediawiki update and rebuildall scripts for each wiki instance in a wikifarm
#!/usr/bin/perl
# Copyright (c) 2007 Shawn M. Douglas (shawndouglas.com)
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation
# files (the "Software"), to deal in the Software without
# restriction, including without limitation the rights to use,
# copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following
# conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
# This script generates a shell script to perform a wiki farm upgrade (to 1.9.3)
# It assumes the presence of "upgrade.list" which is a tab-delimited file
# containing two tab-delimited fields for each wiki:
# 1) directory/database suffix
# 2) pretty url (from $wgArticlePath)
# Specifically, the script
# -loops through list of wikis
# -removes old symlinks and creates new ones
# -creates a new LocalSettings.php file based on the template found in the "01" wiki directory
# -runs the upgrade.php script
# -runs the rebuildall.php script
$ts = `date "+%y%m%d"`;
chomp($ts);
print <<EOF;
#!/bin/sh -x
EOF
open(LIST, "<upgrade.list");
while (<LIST>) {
chomp;
split "\t";
print <<EOF;
cd /Library/WebServer/Documents/$_[0]
rm AdminSettings.php
rm COPYING
rm FAQ
rm HISTORY
rm INSTALL
rm README
rm RELEASE-NOTES
rm UPGRADE
rm docs
rm extensions
rm img_auth.php
rm includes
rm index.php
rm install-utils.inc
rm languages
rm maintenance
rm math
rm profileinfo.php
rm redirect.php
rm redirect.phtml
rm skins
rm tests
rm thumb.php
rm trackback.php
rm wiki.phtml
ln -s ../mediawiki2/AdminSettings.php
ln -s ../mediawiki2/Makefile
ln -s ../mediawiki2/StartProfiler.php
ln -s ../mediawiki2/api.php
ln -s ../mediawiki2/bin
ln -s ../mediawiki2/docs
ln -s ../mediawiki2/extensions
ln -s ../mediawiki2/img_auth.php
ln -s ../mediawiki2/includes
ln -s ../mediawiki2/index.php
ln -s ../mediawiki2/install-utils.inc
ln -s ../mediawiki2/languages
ln -s ../mediawiki2/locale
ln -s ../mediawiki2/maintenance
ln -s ../mediawiki2/math
ln -s ../mediawiki2/opensearch_desc.php
ln -s ../mediawiki2/profileinfo.php
ln -s ../mediawiki2/redirect.php
ln -s ../mediawiki2/redirect.phtml
ln -s ../mediawiki2/serialized
ln -s ../mediawiki2/skins
ln -s ../mediawiki2/t
ln -s ../mediawiki2/tests
ln -s ../mediawiki2/thumb.php
ln -s ../mediawiki2/trackback.php
ln -s ../mediawiki2/wiki.phtml
cp /Library/WebServer/Documents/01/6tna.png .
cp /Library/WebServer/Documents/$_[0]/LocalSettings.php /Library/WebServer/Documents/$_[0]/LocalSettings.php.$ts
cat /Library/WebServer/Documents/01/LocalSettings.php | sed s/smd/$_[1]/ | sed s/01/$_[0]/ | sed s/wikidb01/wikidb$_[0
]/ > /Library/WebServer/Documents/$_[0]/LocalSettings.php
/usr/local/php5/bin/php /Library/WebServer/Documents/mediawiki-1.9.3/maintenance/update.php --conf /Library/WebServer/
Documents/$_[0]/LocalSettings.php
/usr/local/php5/bin/php /Library/WebServer/Documents/mediawiki-1.9.3/maintenance/rebuildall.php --conf /Library/WebSer
ver/Documents/$_[0]/LocalSettings.php
EOF
}
close(LIST);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment