#!/usr/bin/env bash

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

# Download helper for bzr, to be called from the download wrapper script
#
# Options:
#   -q          Be quiet
#   -o FILE     Generate archive in FILE.
#   -u URI      Clone from repository at URI.
#   -c CSET     Use changeset (or revision) CSET.
#   -n NAME     Use basename NAME.
#
# Environment:
#   BZR      : the bzr command to call


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

# --per-file-timestamps comes with bzr-2.2 (released August 2010),
# so only pass it if bzr is recent enough. We compute versions as:
# major*1000 + minor
bzr_min_version=2002
bzr_version=$(($(bzr --version |
                 sed -r -n 's/^Bazaar \(bzr\) ([[:digit:]]+)\.([[:digit:]]+)\..*$/\1*1000+\2/p')
             ))

# If the version is recent enough, we can generate reproducible
# archives; otherwise, we just hope for the best (as it would
# be downloaded from the BR mirror if what we generate here does
# not match the hash we have for it).
if [ ${bzr_version} -ge ${bzr_min_version} ]; then
    timestamp_opt="--per-file-timestamps"
fi

_bzr export ${quiet} --root="'${basename}/'" --format=tgz \
    ${timestamp_opt} - "${@}" "'${uri}'" -r "'${cset}'" \
    >"${output}"
