summaryrefslogtreecommitdiffstats
path: root/support/download/file
diff options
context:
space:
mode:
Diffstat (limited to 'support/download/file')
-rwxr-xr-xsupport/download/file43
1 files changed, 43 insertions, 0 deletions
diff --git a/support/download/file b/support/download/file
new file mode 100755
index 0000000000..fefd6d271c
--- /dev/null
+++ b/support/download/file
@@ -0,0 +1,43 @@
+#!/usr/bin/env bash
+
+# We want to catch any unexpected failure, and exit immediately
+set -e
+set -x
+
+# 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}'" "'${output}'"
OpenPOWER on IntegriCloud