From 2ed020fed32432a2e870bd74321e7a66283de6a6 Mon Sep 17 00:00:00 2001 From: Buddy Sandidge Date: Mon, 15 Mar 2021 12:47:31 -0700 Subject: [PATCH] Add install protoc home script and update utils for os x support --- base/.local/share/buddy-up/includes/utils.sh | 5 +- .../.local/bin/install-protoc-home | 48 +++++++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) create mode 100755 install-scripts/.local/bin/install-protoc-home diff --git a/base/.local/share/buddy-up/includes/utils.sh b/base/.local/share/buddy-up/includes/utils.sh index c9351db..47e3e9e 100644 --- a/base/.local/share/buddy-up/includes/utils.sh +++ b/base/.local/share/buddy-up/includes/utils.sh @@ -46,10 +46,11 @@ set_current_link () { version="${2}" sudo="${3}" current="${prefix}/current" - if [ -s "${current}" ] ; then + if [ -L "${current}" ] ; then $sudo unlink "${current}" fi - $sudo ln --symbolic --relative "${prefix}/${version}" "${current}" + rel="$(relative_path "${prefix}" "${prefix}/${version}")" + $sudo ln -s "$rel" "${current}" } extract_tarball () { diff --git a/install-scripts/.local/bin/install-protoc-home b/install-scripts/.local/bin/install-protoc-home new file mode 100755 index 0000000..e04d9f0 --- /dev/null +++ b/install-scripts/.local/bin/install-protoc-home @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +set -x +set -e + +# shellcheck disable=SC1090 +source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" + +VERSION=${VERSION:-3.15.6} +APP=protoc +APPS_DIR=${XDG_DATA_HOME}/buddy-up/apps/${APP} +VER_DIR=${APPS_DIR}/${VERSION} + +OS=$(get_os) +if [[ $OS == darwin ]]; then + OS=osx +fi + +ARCH=$(get_arch) +if [[ $ARCH == amd64 ]]; then + ARCH=x86_64 +fi + +ZIP=protoc-${VERSION}-${OS}-${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}" + 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 -perm +111 -type f -exec basename {} \;) +cd "${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