blob: beb4c47c57a3c019fb8aa613e94506d2a94ecb43 [file] [log] [blame]
#!/usr/bin/env bash
# Copyright 2017 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
set -eo pipefail; [[ "${TRACE}" ]] && set -x
readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
readonly CIPD_CLIENT_VERSION="${CIPD_CLIENT_VERSION:-$(cat ${SCRIPT_DIR}/.cipd_version)}"
readonly CIPD_CLIENT_URL="${CIPD_CLIENT_URL:-https://chrome-infra-packages.appspot.com}"
declare HOST_PLATFORM="$(uname -s | tr '[:upper:]' '[:lower:]')"
case "${HOST_PLATFORM}" in
linux)
readonly HOST_PLATFORM="linux"
;;
darwin)
readonly HOST_PLATFORM="mac"
;;
*)
echo "Unknown operating system."
exit 1
esac
HOST_ARCH="$(uname -m | tr '[:upper:]' '[:lower:]')"
case "${HOST_ARCH}" in
x86_64|amd64)
readonly HOST_ARCH="amd64"
;;
arm*)
readonly HOST_ARCH="${HOST_ARCH}"
;;
*86)
readonly HOST_ARCH=386
;;
*)
echo "Unknown machine architecture."
exit 1
esac
readonly URL="${CIPD_CLIENT_URL}/client?platform=${HOST_PLATFORM}-${HOST_ARCH}&version=${CIPD_CLIENT_VERSION}"
readonly CLIENT="${SCRIPT_DIR}/.cipd_client"
readonly USER_AGENT="buildtools/$(git -C ${SCRIPT_DIR} rev-parse HEAD 2>/dev/null || echo "???")"
if [[ ! -e "${CLIENT}" ]]; then
echo "Bootstrapping cipd client for ${HOST_PLATFORM}-${HOST_ARCH}..."
if hash curl 2> /dev/null ; then
curl -f --progress-bar "${URL}" -A "${USER_AGENT}" -L -o "${CLIENT}"
chmod +x "${CLIENT}"
else
echo "The \`curl\` command is missing, download ${URL} as ${CLIENT}, and then re-run this command" 1>&2
exit 1
fi
fi
export CIPD_HTTP_USER_AGENT_PREFIX="${USER_AGENT}"
if ! "${CLIENT}" selfupdate -version "${CIPD_CLIENT_VERSION}" ; then
echo -n "selfupdate failed: " 1>&2
echo "run \`CIPD_HTTP_USER_AGENT_PREFIX=${USER_AGENT}/manual ${CLIENT} selfupdate -version '${CIPD_CLIENT_VERSION}'\` to diagnose" 1>&2
echo "" 1>&2
fi
exec "${CLIENT}" "${@}"