#!/usr/bin/sh
#
# Copyright (C) Viacheslav Galaktionov, 2023
#

USAGE="[<old_name>] <new_name>"
if [ -z "$GUILT_VERSION" ]; then
	echo "Invoking `basename "$0"` directly is no longer supported." >&2
	exit 1
fi

_main() {

if [ $# -eq 1 ]; then
	old_name=$(get_top)
	new_name=$1
	shift
elif [ $# -eq 2 ]; then
	old_name=$1
	new_name=$2
else
	usage
fi

need_work_tree

(
    cd_to_toplevel_cached

    [ -f "$GUILT_DIR/$branch/$old_name" ] ||
        die "Patch \"$old_name\" does not exist"

    [ -f "$GUILT_DIR/$branch/$new_name" ] &&
        die "Patch \"$new_name\" already exists"

    if ! valid_patchname "$new_name"; then
        die "The specified patch name is invalid according to git-check-ref-format(1)."
    fi

    mv "$GUILT_DIR/$branch/$old_name" "$GUILT_DIR/$branch/$new_name"

    series_rename_patch "$old_name" "$new_name"
    applied_rename_patch "$old_name" "$new_name"
    if git show-ref -q --verify "refs/patches/$branch/$old_name"; then
        ref_rename_patch "$old_name" "$new_name"
    fi
)

}
