|
|
|
#!/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
|
|
|
|
|
|
|
|
# TODO: get the completion working
|
|
|
|
#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"
|