#!/usr/bin/env bash

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

# Download helper for sftp, 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:
#   SFTP      : the sftp command to call

quiet=
while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do
    case "${OPT}" in
    q)  quiet=-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)
_sftp() {
    if [ -z "${quiet}" ]; then
        printf '%s ' ${SFTP} "${@}"; printf '\n'
    fi
    # Note: please keep command below aligned with what is printed above
    eval ${SFTP} "${@}"
}

_sftp ${quiet} "${@}" "'${uri}/${filename}'" "'${output}'"
