#!/usr/bin/env bash
# get base dir regardless of execution location
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
    DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
    SOURCE="$(readlink "$SOURCE")"
    [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
. $(dirname $SOURCE)/init.sh

PS1="$"
echo "Rebuilding patch files from current fork state..."
function savePatches {
    what=$1
    cd $basedir/$what/

    mkdir -p $basedir/patches/$2
    if [ -d ".git/rebase-apply" ]; then
        # in middle of a rebase, be smarter
        echo "REBASE DETECTED - PARTIAL SAVE"
        last=$(cat ".git/rebase-apply/last")
        next=$(cat ".git/rebase-apply/next")
        declare -a files=("$basedir/patches/$2/"*.patch)
        for i in $(seq -f "%04g" 1 1 $last)
        do
            if [ $i -lt $next ]; then
                rm "${files[`expr $i - 1`]}"
            fi
        done
    else
        rm $basedir/patches/$2/*.patch
    fi

    git format-patch --no-signature --zero-commit --full-index --no-stat -N -o $basedir/patches/$2 upstream/upstream
    cd $basedir
    git add -A $basedir/patches/$2
    echo "  Patches saved for $what to patches/$2"
}

savePatches ${FORK_NAME}-API api
savePatches ${FORK_NAME}-Server server

$basedir/scripts/push.sh
