summaryrefslogtreecommitdiff
path: root/maintenance/resources/update-oojs-ui.sh
diff options
context:
space:
mode:
Diffstat (limited to 'maintenance/resources/update-oojs-ui.sh')
-rw-r--r--maintenance/resources/update-oojs-ui.sh95
1 files changed, 95 insertions, 0 deletions
diff --git a/maintenance/resources/update-oojs-ui.sh b/maintenance/resources/update-oojs-ui.sh
new file mode 100644
index 00000000..1b352922
--- /dev/null
+++ b/maintenance/resources/update-oojs-ui.sh
@@ -0,0 +1,95 @@
+#!/usr/bin/env bash
+
+# This script generates a commit that updates our distribution copy of OOjs UI
+
+if [ -z "$1" ]
+then
+ # Missing required parameter
+ echo >&2 "Usage: $0 path/to/repo/for/oojs-ui"
+ exit 1
+fi
+
+TARGET_REPO=$(cd "$(dirname $0)/../.."; pwd)
+TARGET_DIR=resources/lib/oojs-ui
+UI_REPO=$1
+
+function oojsuihash() {
+ grep "OOjs UI v" "$TARGET_REPO/$TARGET_DIR/oojs-ui.js" \
+ | head -n 1 \
+ | grep -Eo '\([a-z0-9]+\)' \
+ | sed 's/^(//' \
+ | sed 's/)$//'
+}
+
+function oojsuitag() {
+ grep "OOjs UI v" "$TARGET_REPO/$TARGET_DIR/oojs-ui.js" \
+ | head -n 1 \
+ | grep -Eo '\bv[0-9a-z.-]+\b'
+}
+
+function oojsuiversion() {
+ grep "OOjs UI v" "$TARGET_REPO/$TARGET_DIR/oojs-ui.js" \
+ | head -n 1 \
+ | grep -Eo '\bv[0-9a-z.-]+\b.*$'
+}
+
+# Prepare working tree
+cd "$TARGET_REPO" &&
+git reset $TARGET_DIR && git checkout $TARGET_DIR && git fetch origin &&
+git checkout -B upstream-oojsui origin/master || exit 1
+
+cd $UI_REPO || exit 1
+
+# Read the old version and check for changes
+OLDHASH=$(oojsuihash)
+if [ -z "$OLDHASH" ]
+then
+ OLDTAG=$(oojsuitag)
+fi
+if [ "$OLDHASH" == "" ]
+then
+ OLDHASH=$(git rev-parse "$OLDTAG")
+ if [ $? != 0 ]
+ then
+ echo "Could not find OOjs UI version"
+ cd -
+ exit 1
+ fi
+fi
+if [ "$(git rev-parse $OLDHASH)" == "$(git rev-parse HEAD)" ]
+then
+ echo "No changes (already at $OLDHASH)"
+ cd -
+ exit 0
+fi
+
+# Build the distribution
+npm install && grunt git-build || exit 1
+
+# Get the list of changes
+NEWCHANGES=$(git log $OLDHASH.. --oneline --no-merges --reverse --color=never)
+NEWCHANGESDISPLAY=$(git log $OLDHASH.. --oneline --no-merges --reverse --color=always)
+
+# Copy files
+# - Exclude the default non-svg stylesheet
+rsync --recursive --delete --force --exclude 'oojs-ui.css' --exclude 'oojs-ui*.rtl.css' ./dist/ "$TARGET_REPO/$TARGET_DIR" || exit 1
+
+# Read the new version
+NEWVERSION=$(oojsuiversion)
+
+# Generate commit
+cd "$TARGET_REPO"
+COMMITMSG=$(cat <<END
+Update OOjs UI to $NEWVERSION
+
+New changes:
+$NEWCHANGES
+END
+)
+git add -u $TARGET_DIR && git add $TARGET_DIR && git commit -m "$COMMITMSG"
+cat >&2 <<END
+
+
+Created commit with changes:
+$NEWCHANGESDISPLAY
+END