#!/bin/sh
set -e -u -x

DOWNLOAD_NAME=2.7.1.tar.gz
DOWNLOAD_FILE="build/download/$DOWNLOAD_NAME"
DOWNLOAD_URL=https://github.com/mathjax/MathJax/archive/$DOWNLOAD_NAME
DOWNLOAD_HASH="2bb4c0c6f326dd1964ecad1d302d2f9f4a3eb4364f89a30d5e3b4b3069597169"
PACKAGE_DIR=MathJax-2.7.1

download() {
    install -d build/download
    if ! test -f "$DOWNLOAD_FILE"; then
	wget -c -O "$DOWNLOAD_FILE" "$DOWNLOAD_URL"
    fi
    HASH=`sha256sum "$DOWNLOAD_FILE"`
    if ! test "$HASH" = "$DOWNLOAD_HASH  $DOWNLOAD_FILE"; then
        echo "Invalid checksum: $HASH"
	exit 1
    fi
    return 0
}

npm_install() {
    npm install --save-dev
}

unpack_patch() {
    rm -rf build/unpack
    install -d build/unpack
    (cd build/unpack && tar xz) < "$DOWNLOAD_FILE"
    cp Gruntfile.js "build/unpack/$PACKAGE_DIR"
    ln -s ../../../node_modules "build/unpack/$PACKAGE_DIR/node_modules"
    (cd "build/unpack/$PACKAGE_DIR" && \
	./node_modules/grunt-cli/bin/grunt TeX_SVG)
    rm -f "build/unpack/$PACKAGE_DIR/node_modules"
}

replace() {
    for f in LICENSE; do
	rm -rf "$f"
	mv "build/unpack/$PACKAGE_DIR/$f" "$f"
    done
    for f in extensions jax MathJax.js; do
	rm -rf "$f"
	mv "build/unpack/$PACKAGE_DIR/unpacked/$f" "$f"
    done
}

git_commit() {
    git add LICENSE extensions jax MathJax.js
    git add -u extensions jax
    git commit -m "MAINT: rebuild MathJax

    Base package: $DOWNLOAD_HASH  $DOWNLOAD_NAME"
}

download
npm_install
unpack_patch
replace
git_commit

echo "Rebuild successful!"