#!/bin/bash
set -e

# NEEDS: $PATH_TO_UPDATE, $REPO_PATH

echo $PATH_TO_UPDATE

die () { echo "$1" >&2; exit 1; }

url=$(echo "$PATH_TO_UPDATE" | perl -pe '/^\/mit\/([^\/]*)\/web_scripts\/(.*)$/; $_ = "http://scripts.mit.edu/~$1/$2\n";')
[ "$url" != "http://scripts.mit.edu/~/" ] || die "Usage: scripts-patch /mit/<user>/web_scripts/<path>"

versionfile=$PATH_TO_UPDATE/.scripts-version
[ -f "$versionfile" ] || die "$PATH_TO_UPDATE was not created by the scripts installer."
[ -r "$versionfile" ] || die "[$PATH_TO_UPDATE] Could not read .scripts-version file."

# The format of the .scripts-version file is such an awful mess.
#
# I feel like that needed to be said.

version=$(tail -n +2 "$versionfile" | head -n1 | perl -pe '/File: .* -> \`(.*)\.tar\.(gz|bz2)'\''$/; $_ = $1')
echo $version


[ -d "$REPO_PATH/patches/" ] || die "Could not find updates repository."
echo "[$PATH_TO_UPDATE] Applying update for $version:"

pagebefore=`mktemp -t scripts-patch.XXXXXXXXXX` || die "Couldn't allocate mktemp for pagebefore"
pageafter=`mktemp -t scripts-patch.XXXXXXXXXX` || dir "Couldn't allocate mktemp for pageafter"

echo $PATH_TO_UPDATE | perl -pe '/^\/mit\/([^\/]*)\/web_scripts\/(.*)$/; $_ = "http://scripts.mit.edu/~$1/$2\n";'

url=$(echo "$PATH_TO_UPDATE" | perl -pe '/^\/mit\/([^\/]*)\/web_scripts\/(.*)$/; $_ = "http://scripts.mit.edu/~$1/$2\n";')

echo "curl \"$url\" > \"$pagebefore\""

curl "$url" > "$pagebefore"

pwd
echo $REPO_PATH
(PATH_TO_UPDATE="$PATH_TO_UPDATE" SCRIPT="$SCRIPT" OLDVERSION="$OLDVERSION" NEWVERSION="$NEWVERSION" URL="$url" "$REPO_PATH/apply-patch.sh") || die "[$PATH_TO_UPDATE] *** FAILED UPDATE *** of $version"

curl "$url/" >> "$pageafter"
echo "[$PATH_TO_UPDATE] Diff from before/after upgrade:"
diff -U0 "$pagebefore" "$pageafter" || :

rm -f "$pagebefore" "$pageafter"
