|
2 | 2 | # |
3 | 3 | # Update WPLib Box scripts. |
4 | 4 | # |
5 | | -# Be careful with making ANY changes to this script. |
6 | | -# Any changes will potentially alter this script on disk in future versions. |
| 5 | +# This script will handle having itself updated by creating a secondary script that contains |
| 6 | +# all the git commands. |
| 7 | +# This will be exec at the very end ensuring itself wont be changed during the update. |
7 | 8 |
|
8 | 9 |
|
9 | | -BASEDIR="${WPLIB_BOX_CLI_DIR}" |
10 | | -BOX_VERSION="`cat /opt/box/version`" |
| 10 | +# Don't reference common variables as they may not exist. |
| 11 | +WPLIB_BOX_SCRIPTS_REPO="https://github.com/wplib/box-scripts" |
| 12 | +WPLIB_BOX_CLI_DIR="/opt/box" |
| 13 | +DEFAULT_VERSION="master" |
| 14 | + |
11 | 15 |
|
12 | 16 | # Determine version to run. |
13 | 17 | if [ "$1" == "" ] |
14 | 18 | then |
15 | | - VERSION="$BOX_VERSION" |
| 19 | + VERSION="`cat ${WPLIB_BOX_CLI_DIR}/version`" |
| 20 | + if [ "$DEFAULT_VERSION" == "" ] |
| 21 | + then |
| 22 | + VERSION=${DEFAULT_VERSION} |
| 23 | + fi |
16 | 24 | else |
17 | 25 | VERSION="$1" |
18 | 26 | fi |
19 | 27 |
|
| 28 | + |
20 | 29 | # Pull from GitHub. |
21 | | -if [ -d ${BASEDIR} ] |
| 30 | +if [ -d ${WPLIB_BOX_CLI_DIR} ] |
22 | 31 | then |
23 | | - cd ${BASEDIR} |
24 | | - sudo git clean -q -d -fx "" 2>/dev/null |
25 | | - sudo git reset -q --hard $VERSION 2>/dev/null |
26 | | - sudo git pull 2>/dev/null |
27 | | - sudo git checkout -q $VERSION 2>/dev/null |
| 32 | + cat <<EOF > /tmp/self-update.$$ |
| 33 | + cd ${WPLIB_BOX_CLI_DIR} |
| 34 | + echo "# WPLib-Box: Updating /opt/box with version ${VERSION}" |
| 35 | + sudo git clean -q -d -fx "" > /dev/null |
| 36 | + sudo git reset -q --hard ${VERSION} > /dev/null |
| 37 | + sudo git pull -q ${WPLIB_BOX_SCRIPTS_REPO} > /dev/null |
| 38 | + sudo git checkout -q ${VERSION} > /dev/null |
| 39 | + echo $VERSION > /opt/box/version |
| 40 | + echo "Done" |
| 41 | + exec rm -f /tmp/self-update.$$ |
| 42 | +EOF |
28 | 43 | else |
29 | | - sudo git clone "#{WPLIB_BOX_SCRIPTS_REPO}" "${WPLIB_BOX_CLI_DIR}" |
| 44 | + cat <<EOF > /tmp/self-update.$$ |
| 45 | + echo "# WPLib-Box: Initializing /opt/box with version ${VERSION}" |
| 46 | + sudo git clone -q ${WPLIB_BOX_SCRIPTS_REPO} ${WPLIB_BOX_CLI_DIR} > /dev/null |
| 47 | + echo $VERSION > /opt/box/version |
| 48 | + echo "Done" |
| 49 | + exec rm -f /tmp/self-update.$$ |
| 50 | +EOF |
30 | 51 | fi |
31 | | -echo $VERSION > /opt/box/version |
32 | 52 |
|
| 53 | +chmod a+x /tmp/self-update.$$ |
| 54 | +exec /tmp/self-update.$$ |
0 commit comments