#!/bin/bash set -e die () { echo "$1" >&2; exit 1; } path="$1" url=$(echo "$path" | perl -pe '/^\/mit\/([^\/]*)\/web_scripts\/(.*)$/; $_ = "http://scripts.mit.edu/~$1/$2\n";') [ "$url" != "http://scripts.mit.edu/~/" ] || die "Usage: scripts-patch /mit//web_scripts/" versionfile=$path/.scripts-version [ -f "$versionfile" ] || die "$path was not created by the scripts installer." [ -r "$versionfile" ] || die "[$path] 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') updatespath=/mit/andersk/Public/scripts/updates [ -d "$updatespath" ] || die "Could not find updates repository." [ -d "$updatespath/$version" ] || die "[$path] No update available for $version." echo "[$path] Applying update for $version:" pagebefore=`mktemp -t scripts-patch.XXXXXXXXXX` pageafter=`mktemp -t scripts-patch.XXXXXXXXXX` url=$(echo "$path" | perl -pe '/^\/mit\/([^\/]*)\/web_scripts\/(.*)$/; $_ = "http://scripts.mit.edu/~$1/$2\n";') wget -q "$url/" -O "$pagebefore" (cd "$path"; "$updatespath/$version/update") || die "[$path] *** FAILED UPDATE *** of $version" wget -q "$url/" -O "$pageafter" echo "[$path] Diff from before/after upgrade:" diff -U0 "$pagebefore" "$pageafter" || : rm -f "$pagebefore" "$pageafter"