#!/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