You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			77 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Bash
		
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Bash
		
	
#!/usr/bin/env bash
 | 
						|
 | 
						|
# shellcheck disable=SC1090
 | 
						|
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
 | 
						|
 | 
						|
set -euo pipefail
 | 
						|
 | 
						|
APP=bat
 | 
						|
BAT_DEST="${XDG_DATA_HOME}/apps/releases/${APP}"
 | 
						|
BAT_CURRENT="${BAT_DEST}/current"
 | 
						|
BAT_VERSION=${BAT_VERSION:-0.24.0}
 | 
						|
EXTRA_DEST="${XDG_DATA_HOME}/apps/releases/bat-extras"
 | 
						|
EXTRA_CURRENT="${EXTRA_DEST}/current"
 | 
						|
EXTRA_VERSION=${EXTRA_VERSION:-2024.07.10}
 | 
						|
EXTRA_FILE=${EXTRA_FILE:-2024.07.10}
 | 
						|
 | 
						|
MAN_DIR=${XDG_DATA_HOME}/man/man1
 | 
						|
 | 
						|
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
 | 
						|
 | 
						|
BAT_URL=https://github.com/sharkdp/bat/releases/download/v${BAT_VERSION}/bat-v${BAT_VERSION}-${ARCH}-${OS}.tar.gz
 | 
						|
EXTRA_URL=https://github.com/eth-p/bat-extras/releases/download/v${EXTRA_VERSION}/bat-extras-${EXTRA_FILE}.zip
 | 
						|
 | 
						|
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
 | 
						|
}
 | 
						|
 | 
						|
extract_tarball "${BAT_URL}" "${BAT_DEST}/${BAT_VERSION}" "--strip-components 1"
 | 
						|
set_current_link "${BAT_DEST}" "${BAT_VERSION}"
 | 
						|
 | 
						|
set_symlink "${XDG_BIN_HOME}"                   bat                   "${BAT_CURRENT}"              bat
 | 
						|
set_symlink "${MAN_DIR}"                        bat.1                 "${BAT_CURRENT}"              bat.1
 | 
						|
set_symlink "${XDG_CONFIG_HOME}/zsh/zshrc.d"    bat-autocomplete.zsh  "${BAT_CURRENT}/autocomplete" bat.zsh
 | 
						|
set_symlink "${XDG_CONFIG_HOME}/fish/functions" bat-autocomplete.fish "${BAT_CURRENT}/autocomplete" bat.fish
 | 
						|
 | 
						|
extract_zip "${EXTRA_URL}" "${EXTRA_DEST}/${EXTRA_VERSION}"
 | 
						|
set_current_link "${EXTRA_DEST}" "${EXTRA_VERSION}"
 | 
						|
 | 
						|
for file_path in "${EXTRA_CURRENT}"/bin/*; do
 | 
						|
    file=$(basename "${file_path}")
 | 
						|
    set_symlink "${XDG_BIN_HOME}" "${file}" "${EXTRA_CURRENT}/bin" "${file}"
 | 
						|
done
 | 
						|
 | 
						|
for file_path in "${EXTRA_CURRENT}"/man/*; do
 | 
						|
    file=$(basename "${file_path}")
 | 
						|
    set_symlink "${MAN_DIR}" "${file}" "${EXTRA_CURRENT}/man" "${file}"
 | 
						|
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
 |