#!/usr/bin/env bash

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

# Download helper for cp, to be called from the download wrapper script
#
# Options:
#   -q          Be quiet.
#   -o FILE     Copy to file FILE.
#   -f FILE     Copy from basename file FILE.
#   -u DIR      Copy from FILE in DIR.
#
# Environment:
#   LOCALFILES: the cp command to call

# 'cp' usually does not print anything on its stdout, whereas the
# other download backends, even if not verbose, at least print some
# progress information.
# Make 'cp' verbose by default, so it behaves a bit like the others.
verbose=-v

while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do
    case "${OPT}" in
    q)  verbose=;;
    o)  output="${OPTARG}";;
    f)  file="${OPTARG}";;
    u)  dir="${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)
_localfiles() {
    eval ${LOCALFILES} "${@}"
}

_localfiles ${verbose} "'${dir##file://}/${file}'" "'${output}'"
