#!/usr/bin/env bash set -euo pipefail # shellcheck disable=SC1090 source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" VERSION=${VERSION:-v1.29.0} DEST=${XDG_DATA_HOME}/apps/releases/buf CURRENT=${DEST}/current URL=https://github.com/bufbuild/buf/releases/download/${VERSION}/buf-$(uname)-$(uname -m).tar.gz main () ( extract_tarball "${URL}" "${DEST}/${VERSION}" "--strip-components 1" set_current_link "${DEST}" "${VERSION}" symlink_apps symlink_man_pages set_symlink \ "${XDG_CONFIG_HOME}/bash/bashrc.d" buf.sh \ "${CURRENT}/etc/bash_completion.d" buf set_symlink "${XDG_DATA_HOME}/zsh/site-functions" _buf \ "${CURRENT}/share/zsh/site-functions" _buf set_symlink "${XDG_DATA_HOME}/fish/vendor_completions.d" buf.fish \ "${CURRENT}/share/fish/vendor_completions.d" buf.fish ) symlink_apps () ( APPS=$(find "${DEST}/${VERSION}/bin" -type f -exec basename {} ';') for APP in ${APPS}; do set_symlink "${XDG_BIN_HOME}" "${APP}" "${CURRENT}/bin" "${APP}" done ) symlink_man_pages () ( MANS=$(find "${DEST}/${VERSION}/share/man/man1" -type f -exec basename {} ';') for SHARE in ${MANS}; do set_symlink "${MAN_DIR}" "${SHARE}" "${CURRENT}/share/man/man1" "${SHARE}" done ) set_symlink () ( dest_dir=$1 dest_file=$2 src_dir=$3 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 ) main "$@"