#!/usr/bin/env bash set -e # shellcheck disable=SC1090 source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" get_os () ( case $(uname -s) in Linux*) echo linux;; Darwin*) echo osx;; *) >&2 echo "unsupported os"; return; esac ) get_arch () ( uname -m ) VERSION=${VERSION:-21.2} APP=protoc APPS_DIR=${XDG_DATA_HOME}/apps/releases/${APP} VER_DIR=${APPS_DIR}/${VERSION} ZIP=protoc-${VERSION}-$(get_os)-$(get_arch).zip TMP_DIR=$(mktemp -d) DEST_FILE=$TMP_DIR/$ZIP URL=https://github.com/protocolbuffers/protobuf/releases/download/v${VERSION}/${ZIP} if [[ ! -d "${VER_DIR}" ]]; then curl --output "${DEST_FILE}" --location "${URL}" mkdir -p "${VER_DIR}" unzip -o "${DEST_FILE}" -d "${VER_DIR}" find "${VER_DIR}" -type f -exec chmod 644 {} \; find "${VER_DIR}" -type d -exec chmod 755 {} \; find "${VER_DIR}/bin" -type f -exec chmod 755 {} \; fi rm -rfv "$TMP_DIR" set_current_link "${APPS_DIR}" "${VERSION}" apps=$(find "${APPS_DIR}/current/bin" -maxdepth 1 -type f -exec basename {} \;) pushd "${XDG_BIN_HOME}" for bin in $apps; do if [[ ! -s $bin ]]; then ln -s \ "$(relative_path "${XDG_BIN_HOME}" "${APPS_DIR}/current/bin/${bin}")" \ "${bin}" fi done popd pushd "${XDG_INCLUDE_HOME}" if [[ ! -s google ]]; then ln -s \ "$(relative_path "${XDG_INCLUDE_HOME}" "${APPS_DIR}/current/include/google")" \ google fi popd