#!/usr/bin/env bash

# We want to catch any unexpected failure, and exit immediately
set -e

# Download helper for scp, to be called from the download wrapper script
#
# Options:
#   -q          Be quiet.
#   -o FILE     Copy to local file FILE.
#   -f FILE     Copy from remote file FILE.
#   -u URI      Download file at URI.
#
# Environment:
#   SCP       : the scp command to call

verbose=
while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do
    case "${OPT}" in
    q)  verbose=-q;;
    o)  output="${OPTARG}";;
    f)  filename="${OPTARG}";;
    u)  uri="${OPTARG}";;
    :)  printf "option '%s' expects a mandatory argument\n" "${OPTARG}"; exit 1;;
    \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;;
    esac
done

shift $((OPTIND-1)) # Get rid of our options

# Caller needs to single-quote its arguments to prevent them from
# being expanded a second time (in case there are spaces in them)
_scp() {
    eval ${SCP} "${@}"
}

# Remove any scheme prefix
uri="${uri##scp://}"

_scp ${verbose} "${@}" "'${uri}/${filename}'" "'${output}'"
