#!/bin/sh

CHANNEL="${CHANNEL:-beta}"
NOREMOTE="${NOREMOTE:-false}"
DIST="${DIST:-experimental}"
DEBDIR="${DEBDIR:-rust/debian}"

set -x
set -e

abort() { local x="$1"; shift; echo >&2 "$@"; exit "$x"; }

dquilt() {
    QUILT_PATCHES="debian/patches" \
    QUILT_PATCH_OPTS="--reject-format=unified" \
    QUILT_DIFF_ARGS="-p ab --no-timestamps --no-index --color=auto" \
    QUILT_REFRESH_ARGS="-p ab --no-timestamps --no-index" \
    quilt "$@"
}

HOST=https://static.rust-lang.org
BASENAME="rustc-$CHANNEL-src.tar.gz"
OLD_HASH="62abc69f"
JQUERY="https://code.jquery.com/jquery-2.1.4.js"

test -d "$DEBDIR" || abort 1 "DEBDIR not a directory: $DEBDIR"
DEBDIR="$(readlink -f $DEBDIR)"
$NOREMOTE || wget -N "$HOST/dist/$BASENAME"
$NOREMOTE || wget -N "$HOST/dist/$BASENAME.asc"
$NOREMOTE || MODDATE1="$(wget "$HOST/dist/index.txt" -O - | grep "^/dist/$BASENAME," | cut -d, -f3 | sed -e 's/\(.*\)-\(.*\)-\(.*\)T.*/\1\2\3/')"
MODDATE2="$(TZ=UTC stat "$BASENAME" -c %y | sed -e 's/\(.*\)-\(.*\)-\([0-9]*\) .*$/\1\2\3/')"
$NOREMOTE || test "$MODDATE1" = "$MODDATE2" || abort 2 "file mod times don't match, try again"
$NOREMOTE || wget -N "$JQUERY"

rm -rf "rustc-$CHANNEL"
tar xf "$BASENAME"

cd "rustc-$CHANNEL"
{
	echo "CFG_RELEASE_CHANNEL=$CHANNEL"
	echo "CFG_HASH_COMMAND=md5sum | cut -c1-8"
	sed -n -e '/^CFG_RELEASE/,/^##/{/^CFG_INFO/d;p}' mk/main.mk
	echo "all:"
	echo "	@echo export CFG_RELEASE=\$(CFG_RELEASE)"
	echo "	@echo export CFG_FILENAME_EXTRA=\$(CFG_FILENAME_EXTRA)"
} | make -f - > ./envvars
. ./envvars
NEWUPSTR="$(echo "$CFG_RELEASE.$MODDATE2+dfsg1" | sed -e 's/-beta/~beta/' -e 's/-nightly/~~nightly/')"
cp -a "$DEBDIR" .
mk-origtargz -v "$NEWUPSTR" "../$BASENAME"
cd ..

rm -rf "rustc-$CHANNEL" "rustc-$NEWUPSTR"
tar xf "rustc_$NEWUPSTR.orig.tar.gz"
mv "rustc-$CHANNEL" "rustc-$NEWUPSTR"

cd "rustc-$NEWUPSTR"
cp -a "$DEBDIR" .
dch -D "$DIST" -v "$NEWUPSTR-1" "Team upload."
dch -a "Switch to $CHANNEL channel."
$NOREMOTE || debian/make_orig-dl_tarball.py
rm debian/missing-sources/jquery-*
cp "../$(basename "$JQUERY")" debian/missing-sources
sed -i -e 's/\(RELEASE_CHANNEL := \)\(.*\)/\1'"$CHANNEL"'/g' debian/rules
sed -i -e "s/$OLD_HASH/$CFG_FILENAME_EXTRA/" "debian/control"
sed -i -e "s/$OLD_HASH/$CFG_FILENAME_EXTRA/" "debian/libstd-rust-$OLD_HASH.lintian-overrides"
mv "debian/libstd-rust-$OLD_HASH.lintian-overrides" "debian/libstd-rust-$CFG_FILENAME_EXTRA.lintian-overrides"
while dquilt push; do dquilt refresh; done
dquilt pop -a
rm -rf .pc
dpkg-buildpackage -d -S
cd ..

set +x

echo "Source package built, but there is NO GUARANTEE THAT IT WORKS!"
echo "You should now try to build it with \`sudo cowbuilder --build rustc_$NEWUPSTR-1.dsc\`"
