diff --git a/bat/.local/bin/install-bat-home b/bat/.local/bin/install-bat-home new file mode 100755 index 0000000..3de9760 --- /dev/null +++ b/bat/.local/bin/install-bat-home @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +APP=bat +VERSION=${VERSION:-v0.17.1} +DATA_DIR="${XDG_DATA_HOME}/apps/releases" +DEST_DIR="${DATA_DIR}/${APP}/${VERSION}" + +OS= +ARCH= +case $(uname -s) in + Linux*) OS=unknown-linux-gnu;; + Darwin*) OS=apple-darwin;; + CYGWIN_NT*|Windows_NT*) OS=pc-windows-msvc;; + *) >&2 echo "unsupported os"; return; +esac + +case $(uname -m) in + amd64*|x86_64*) ARCH=x86_64;; + i686*|i386*) ARCH=i686;; + arm|armv7*|armv6*) ARCH=arm;; + aarch64*|armv8*) ARCH=arm64;; + *) >&2 echo "unsupported architecture: $(uname -m)"; exit 1;; +esac + +function bail () { + echo "unexpected error $1" + exit 1 +} + +function do_link () { + local dir="$1" + local link="$2" + if [[ ! -d "${dir}" ]] ; then + return + fi + if [[ -L "${dir}/$(basename "${link}")" ]] ; then + return + fi + cd "${dir}" || bail "failed to change directory: ${dir}" + ln --symbolic "${link}" "$(basename "${link}")" +} + +URL="https://github.com/sharkdp/bat/releases/download/${VERSION}/bat-${VERSION}-${ARCH}-${OS}.tar.gz" +TMP_DIR= +if [[ ! -d "${DEST_DIR}" ]] ; then + set -x + TMP_DIR=$(mktemp --directory) + TAR_GZ="${TMP_DIR}/release.tar.gz" + echo "start download: ${URL}" + curl --location --silent --output "${TAR_GZ}" "${URL}" + echo "stop download: ${URL}" + mkdir -p "${DEST_DIR}" + tar xzf "${TAR_GZ}" --strip-components 1 --directory "${DEST_DIR}" + rm -rf "${TMP_DIR}" +fi +unset TMP_DIR + +cd "${DATA_DIR}/${APP}" || bail "directory change failed: ${DATA_DIR}/${APP}" +[[ -s current ]] && unlink current +ln -s "${VERSION}" current + +ZSH_CONFIG_D="${XDG_CONFIG_HOME}/zsh/zshrc.d" +FISH_CONFIG_D="${XDG_CONFIG_HOME}/fish/functions" +MAN_DIR="${XDG_DATA_HOME}/man/man1" +[[ -d ${MAN_DIR} ]] || mkdir -p "${MAN_DIR}" + +do_link "${XDG_BIN_HOME}" "${DATA_DIR}/${APP}/current/bat" +do_link "${ZSH_CONFIG_D}" "${DATA_DIR}/${APP}/current/autocomplete/bat.zsh" +do_link "${FISH_CONFIG_D}" "${DATA_DIR}/${APP}/current/autocomplete/bat.fish" +do_link "${MAN_DIR}" "${DATA_DIR}/${APP}/current/bat.1"