#!/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
#
# Call it as:
#   .../bzr [-q] OUT_FILE REPO_URL REV BASENAME
#
# Environment:
#   BZR      : the bzr command to call


verbose=
while getopts :q OPT; do
    case "${OPT}" in
    q)  verbose=-q;;
    \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;;
    esac
done
shift $((OPTIND-1))

output="${1}"
repo="${2}"
rev="${3}"
basename="${4}"

# Caller needs to single-quote its arguments to prevent them from
# being expanded a second time (in case there are spaces in them)
_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 ${verbose} --root="'${basename}/'" --format=tgz \
    ${timestamp_opt} - "'${repo}'" -r "'${rev}'" \
    >"${output}"
