#!/usr/bin/env bash set -euo pipefail # shellcheck disable=SC1091 source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" VERSION=${VERSION:-27.3} APP=protoc APPS_DIR=${XDG_DATA_HOME}/apps/releases/${APP} VER_DIR=${APPS_DIR}/${VERSION} main() ( 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 ) get_os() ( case $(uname -s) in Linux*) echo linux ;; Darwin*) echo osx ;; *) echo >&2 "unsupported os" return ;; esac ) get_arch() ( uname -m ) main "${@}"