aboutsummaryrefslogtreecommitdiff
path: root/mediawiki
blob: a20d4e9dd20b991c1494e5f45716c5f8a646f7d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/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"

  if [ -z "$VERSION" ]; then
    echo "usage: $BASENAME deploy <version>"
    exit 1
  fi

  wget $RELEASES/$MAJOR_VERSION/$TARBALL
  wget $RELEASES/$MEJOR_VERSION/$TARBALL.sig
  gpg --verify $TARBALL.sig $TARBALL
  tar xvf $TARBALL
  $sudo chown -R root. mediawiki-$VERSION
  rm $TARBALL*
  ln -sf mediawiki-$VERSION mediawiki
}

# Upgrade
function mediawiki_upgrade {
  OLD_VERSION="$1"
  VERSION="$2"

  if [ -z "$VERSION" ]; then
    echo "usage: $BASENAME upgrade <old-version> <new-version>"
    exit 1
  fi

  # Deploy
  mediawiki_deploy $VERSION

  # Copy configuration
  $sudo cp -a mediawiki-$OLD_VERSION/LocalSettings.php mediawiki-$VERSION/

  # Symlink extensions
  if [ -d "mediawiki-$OLD_VERSION/contrib" ]; then
    $sudo cp -a mediawiki-$OLD_VERSION/contrib mediawiki-$VERSION/

    for extension in mediawiki-$VERSION/contrib/*; do
      if [ -d "mediawiki-$VERSION/contrib/$extension" ]; then
        (
          cd mediawiki-$VERSION/extensions
          $sudo ln -s ../contrib/$extension
        )
      fi
    done
  fi

  # Audit
  echo "Audit:"
  du -hs mediawiki-$OLD_VERSION
  du -hs mediawiki-$VERSION
}

# Main
if [ -z "$1" ]; then
  echo "Usage: $BASENAME <deploy|upgrade> [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