#!/bin/bash
set -euo pipefail

source "${HOME}/bin/script_framework.sh"

function usage() {
	echo "Usage: $0 [-hv] [-p prefix] <port>" >&2
}

# Get real shareport command
shareport=$(which -a shareport | grep -v $0 | head -n1)

# Start argument array
args=($shareport)
host=localhost

# Parse options
while getopts ":hi:p:v" o; do
	case "${o}" in
	h)
		usage
		exit 0
		;;
	i)
		host="${OPTARG}"
		;;
	p)
		args+=(--var "FQDN_PREFIX=${OPTARG}")
		;;
	v)
		args+=(--log-level debug)
		;;
	*)
		usage
		fatal "Invalid option -- ${OPTARG}"
		;;
	esac
done
shift $((OPTIND - 1))

# Add port
port="${1:-}"
[[ -n $port ]] || fatal "Missing local port as first argument"
args+=(--local-addr "${host}:${port}")

step "Fetching secrets..."
export IDENTITY_FILE=$(mktemp)
export IDENTITY_FILE_PASSWORD=$(vault read -field=passphrase secret/ssh-key/shareport)

vault read -field=private secret/ssh-key/shareport >${IDENTITY_FILE}

# Configure remote
export REMOTE_HOST=knut.dev:22
export REMOTE_SCRIPT="${HOME}/.config/shareport.remote.sh"
export REMOTE_USER=shareport

# Setup removal of SSH key after exit
function cleanup() {
	step "Cleaning up..."
	rm -f ${IDENTITY_FILE}
}
trap cleanup EXIT

step "Starting shareport..."
"${args[@]}"