#!/bin/bash

set -eu

readonly gluon_remote_upstream=https://github.com/freifunk-gluon/gluon.git

script_path=$(dirname $(readlink -f "$0"))
gluon_path=$(readlink -f "$script_path/../gluon")

tag_to_update_to="${1:-}"

if [ -z "$tag_to_update_to" ]; then
	echo "Usage: $0 [tag to update to]"
	exit 1
fi

verify_remotes() {
	remote_upstream=$(git -C "$gluon_path" remote get-url upstream)

	if [ "$remote_upstream" != "$gluon_remote_upstream" ]; then
		echo "Upstream remote is not set up correctly. Please run:"
		echo "  git -C \"$gluon_path\" remote set-url upstream \"$gluon_remote_upstream\""
		exit 1
	fi
}

verify_remotes

git -C "$gluon_path" fetch origin --tags

git -C "$gluon_path" fetch upstream "$tag_to_update_to"

current_branch_name=$(git -C "$gluon_path" rev-parse --abbrev-ref HEAD)
current_upstream_tag_name=${current_branch_name/-ffs/}

git -C "$gluon_path" checkout -b "$tag_to_update_to-ffs"

git -C "$gluon_path" rebase -i "$current_upstream_tag_name" --onto FETCH_HEAD

fork_tagname="$tag_to_update_to-ffs0.1"
git -C "$gluon_path" tag -a "$fork_tagname" -m "Release $fork_tagname"

git -C "$gluon_path" push origin "$tag_to_update_to"
git -C "$gluon_path" push origin "$fork_tagname"