#!/bin/bash -eu

. "$(dirname "$0")"/lsq-defs

do_release=true
if [ $# -ge 1 ] && [ "$1" = --rc ]; then
    do_release=false
fi

full_version="$(make kernelversion)"
base_ver="$(base_version "$full_version")"

release_branch_name=linux-$base_ver.y
if ! git diff --quiet HEAD $release_branch_name; then
    echo >&2 "E: Head doesn't match branch $release_branch_name"
    exit 1
fi

# Stash away changes applied through quilt
git add -f .pc
git stash save "quilted working tree for $full_version"

revert_worktree() {
    {
	git checkout -f $release_branch_name
	git stash pop
	git reset .pc
    } >/dev/null
}

if $do_release; then
    branch_name=$release_branch_name
    git checkout $branch_name
else
    branch_name=$release_branch_name-rc
    git checkout -B $branch_name
fi

# Re-apply them through git
git quiltimport --patches "$(get_queue $base_ver)"

if $do_release; then
    full_version="$(next_update $(make kernelversion))"
else
    : # stick with the version we got from the updated tree
fi
old_IFS="$IFS"
IFS=.-
set -- $full_version
IFS="$old_IFS"
sed -i "s/^SUBLEVEL =.*/SUBLEVEL = $3/; s/^EXTRAVERSION =.*/EXTRAVERSION =${4:+ -$4}/" Makefile
git commit -m "Linux $full_version" Makefile

# Check for unexpected changes
# XXX I want to filter out the version change here and then automatically fail
# if there's anything else, but can't work out how to do that yet.
echo "Changes from previous working tree:"
git diff stash@{0} HEAD | filterdiff -p1 -x '.pc/*' --clean
read -p "All good? " </dev/tty
case "$REPLY" in
    y|yes)
	if $do_release; then
	    git stash drop
	fi
        ;;
    *)
	echo Reverting...
	revert_worktree
	exit 1
	;;
esac

if $do_release; then
    git tag -s -m "This is the $full_version stable release" v$full_version
    git branch -D $branch_name-rc

    queue="$(get_queue $base_ver)"
    cd "$(dirname "$queue")"
    git mv "$(basename "$queue")" releases/$full_version
    git commit -m "Release $full_version"
else
    revert_worktree
fi
