aboutsummaryrefslogtreecommitdiff
path: root/mediawiki-dl
blob: e899e42bd1f6c66c04927468c5d46a229682c1a9 (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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/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 <version>"
    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 <old-version> <new-version>"
    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 <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