#!/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 <&2 <