| #!/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 "[31;1mselfupdate failed:[0;1m " 1>&2 |
| echo "run \`CIPD_HTTP_USER_AGENT_PREFIX=${USER_AGENT}/manual ${CLIENT} selfupdate -version '${CIPD_CLIENT_VERSION}'\` to diagnose" 1>&2 |
| echo "[0m" 1>&2 |
| fi |
| |
| exec "${CLIENT}" "${@}" |