Update install-bat-home script to include bat-extras
This commit is contained in:
parent
7589cdf19f
commit
465f393a32
@ -53,6 +53,39 @@ set_current_link () {
|
|||||||
$sudo ln -s "$rel" "${current}"
|
$sudo ln -s "$rel" "${current}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unlink_if_set () {
|
||||||
|
dir="$1"
|
||||||
|
if [ -L "${dir}" ]; then
|
||||||
|
unlink "${dir}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
mkdir_if_missing () {
|
||||||
|
dir="$1"
|
||||||
|
if [ ! -d "${dir}" ]; then
|
||||||
|
mkdir -p "${dir}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
extract_zip () {
|
||||||
|
url="${1}"
|
||||||
|
dest="${2}"
|
||||||
|
args="${3}"
|
||||||
|
sudo="${4}"
|
||||||
|
|
||||||
|
if [ -d "${dest}" ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
$sudo mkdir -p "${dest}"
|
||||||
|
|
||||||
|
tmp_dir="$(mktemp -d)"
|
||||||
|
zipfile=${tmp_dir}/release.zip
|
||||||
|
curl --silent --location --output "${zipfile}" "${url}"
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
$sudo unzip -o "${zipfile}" -d "${dest}" ${args}
|
||||||
|
rm -rf "${tmp_dir}"
|
||||||
|
}
|
||||||
|
|
||||||
extract_tarball () {
|
extract_tarball () {
|
||||||
url="${1}"
|
url="${1}"
|
||||||
dest="${2}"
|
dest="${2}"
|
||||||
|
|||||||
@ -1,9 +1,17 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# shellcheck disable=SC1090
|
||||||
|
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
|
||||||
|
|
||||||
APP=bat
|
APP=bat
|
||||||
VERSION=${VERSION:-v0.17.1}
|
BAT_DEST="${XDG_DATA_HOME}/apps/releases/${APP}"
|
||||||
DATA_DIR="${XDG_DATA_HOME}/apps/releases"
|
BAT_CURRENT="${BAT_DEST}/current"
|
||||||
DEST_DIR="${DATA_DIR}/${APP}/${VERSION}"
|
BAT_VERSION=${BAT_VERSION:-0.18.1}
|
||||||
|
EXTRA_DEST="${XDG_DATA_HOME}/apps/releases/bat-extras"
|
||||||
|
EXTRA_CURRENT="${EXTRA_DEST}/current"
|
||||||
|
EXTRA_VERSION=${EXTRA_VERSION:-2021.04.06}
|
||||||
|
|
||||||
|
MAN_DIR=${XDG_DATA_HOME}/man/man1
|
||||||
|
|
||||||
OS=
|
OS=
|
||||||
ARCH=
|
ARCH=
|
||||||
@ -22,50 +30,44 @@ case $(uname -m) in
|
|||||||
*) >&2 echo "unsupported architecture: $(uname -m)"; exit 1;;
|
*) >&2 echo "unsupported architecture: $(uname -m)"; exit 1;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
function bail () {
|
BAT_URL=https://github.com/sharkdp/bat/releases/download/v${BAT_VERSION}/bat-v${BAT_VERSION}-${ARCH}-${OS}.tar.gz
|
||||||
echo "unexpected error $1"
|
EXTRA_URL="https://github.com/eth-p/bat-extras/releases/download/v${EXTRA_VERSION}/bat-extras-${EXTRA_VERSION//\./}.zip"
|
||||||
exit 1
|
|
||||||
|
set_symlink () {
|
||||||
|
local dest_dir="$1"
|
||||||
|
local dest_file="$2"
|
||||||
|
local src_dir="$3"
|
||||||
|
local src_file="$4"
|
||||||
|
|
||||||
|
mkdir_if_missing "${dest_dir}"
|
||||||
|
cd "${dest_dir}" || exit 1
|
||||||
|
unlink_if_set "${dest_dir}/${dest_file}"
|
||||||
|
ln -s "$(relative_path "${dest_dir}" "${src_dir}/${src_file}")" "${dest_file}"
|
||||||
|
cd - > /dev/null || exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
function do_link () {
|
extract_tarball "${BAT_URL}" "${BAT_DEST}/${BAT_VERSION}" "--strip-components 1"
|
||||||
local dir="$1"
|
set_current_link "${BAT_DEST}" "${BAT_VERSION}"
|
||||||
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"
|
set_symlink "${XDG_BIN_HOME}" bat "${BAT_CURRENT}" bat
|
||||||
TMP_DIR=
|
set_symlink "${MAN_DIR}" bat.1 "${BAT_CURRENT}" bat.1
|
||||||
if [[ ! -d "${DEST_DIR}" ]] ; then
|
set_symlink "${XDG_CONFIG_HOME}/zsh/zshrc.d" bat-autocomplete.zsh "${BAT_CURRENT}/autocomplete" bat.zsh
|
||||||
set -x
|
set_symlink "${XDG_CONFIG_HOME}/fish/functions" bat-autocomplete.fish "${BAT_CURRENT}/autocomplete" bat.fish
|
||||||
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}"
|
extract_zip "${EXTRA_URL}" "${EXTRA_DEST}/${EXTRA_VERSION}"
|
||||||
[[ -s current ]] && unlink current
|
set_current_link "${EXTRA_DEST}" "${EXTRA_VERSION}"
|
||||||
ln -s "${VERSION}" current
|
|
||||||
|
|
||||||
# TODO: get the completion working
|
for file_path in "${EXTRA_CURRENT}"/bin/*; do
|
||||||
#ZSH_CONFIG_D="${XDG_CONFIG_HOME}/zsh/zshrc.d"
|
file=$(basename "${file_path}")
|
||||||
#FISH_CONFIG_D="${XDG_CONFIG_HOME}/fish/functions"
|
set_symlink "${XDG_BIN_HOME}" "${file}" "${EXTRA_CURRENT}/bin" "${file}"
|
||||||
MAN_DIR="${XDG_DATA_HOME}/man/man1"
|
done
|
||||||
[[ -d ${MAN_DIR} ]] || mkdir -p "${MAN_DIR}"
|
|
||||||
|
|
||||||
do_link "${XDG_BIN_HOME}" "${DATA_DIR}/${APP}/current/bat"
|
for file_path in "${EXTRA_CURRENT}"/man/*; do
|
||||||
#do_link "${ZSH_CONFIG_D}" "${DATA_DIR}/${APP}/current/autocomplete/bat.zsh"
|
file=$(basename "${file_path}")
|
||||||
#do_link "${FISH_CONFIG_D}" "${DATA_DIR}/${APP}/current/autocomplete/bat.fish"
|
set_symlink "${MAN_DIR}" "${file}" "${EXTRA_CURRENT}/man" "${file}"
|
||||||
do_link "${MAN_DIR}" "${DATA_DIR}/${APP}/current/bat.1"
|
done
|
||||||
|
|
||||||
|
for file_path in "${EXTRA_CURRENT}"/doc/*; do
|
||||||
|
file=$(basename "${file_path}")
|
||||||
|
set_symlink "${XDG_DATA_HOME}/doc" "${file}" "${EXTRA_CURRENT}/doc" "${file}"
|
||||||
|
done
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user