#!/usr/bin/env bash install_buildbuddy_cli() ( set -eo pipefail # Get host CPU architecture: "x86_64" or "arm64" arch=$(uname -m) if [[ "$arch" == "aarch64" ]]; then arch="arm64"; fi # Get host OS name: "linux" or "darwin" os=$(uname -s | tr '[:upper:]' '[:lower:]') tempfile=$(mktemp buildbuddy.XXXXX) cleanup() { rm -f "$tempfile"; } trap cleanup EXIT # Look for the line matching # "browser_download_url": "https://github.com/buildbuddy-io/bazel/releases/.../bazel-...-${os}-${arch}" # and extract the URL. release="${1:-latest}" latest_binary_url=$( curl -fsSL https://api.github.com/repos/buildbuddy-io/bazel/releases/"$release" | perl -nle 'if (/"browser_download_url":\s*"(.*?-'"${os}-${arch}"')"/) { print $1 }' ) if [[ ! "$latest_binary_url" ]]; then echo >&2 "Could not find a CLI release for os '$os', arch '$arch'" exit 1 fi echo >&2 "Downloading $latest_binary_url" curl -fSL "$latest_binary_url" -o "$tempfile" chmod 0755 "$tempfile" echo >&2 "Will write the CLI to /usr/local/bin - this may ask for your password." sudo mv "$tempfile" /usr/local/bin/bb ) install_buildbuddy_cli "$@"