#!/bin/bash -e

# Usage
trap "printf '%s\n' 'Usage: ui-auto-rsign [USER@]REMOTEHOST TARBALL SIGNFILE [EXTRA_GPG_OPTIONS]'" ERR

# Parse options
RHOST="${1}"
TARBALL_ABS="${2}"
TARBALL="$(basename "${TARBALL_ABS}")"
SIGNFILE_ABS="${3}"
SIGNFILE="$(basename "${SIGNFILE_ABS}")"
shift 3
EXTRA_GPG_OPTIONS="${@}"

# Check options
[ -n "${RHOST}" ]
[ -n "${TARBALL}" ]
[ -n "${SIGNFILE}" ]

# Never auto-overwrite on remote
ui_auto_rsign_check_rfile()
{
	if ssh "${RHOST}" test -e "${1}"; then
		printf "W: Remote file ${RHOST}:${TARBALL} exists!\n" >&2
		ssh "${RHOST}" rm -i "${1}"
	fi
}
ui_auto_rsign_check_rfile "${TARBALL}"
ui_auto_rsign_check_rfile "${SIGNFILE}"

# Ok. lets do it
scp "${TARBALL_ABS}" ${RHOST}:
ssh -t "${RHOST}" gpg --sign --detach --armor ${EXTRA_GPG_OPTIONS} --output="${SIGNFILE}" "${TARBALL}"
scp "${RHOST}:${SIGNFILE}" "${SIGNFILE_ABS}"
ssh "${RHOST}" rm "${TARBALL}" "${SIGNFILE}"
