#!/usr/bin/env bash # general installer for sharkdp's rust based applications USAGE="Usage: ${0##*/} " APPS="Apps: bat, hyperfine, hexyl, fd, vivid, pastel, lscolors, diskus" app=$1 if [[ -z $app || $app == "help" ]]; then echo $USAGE >&2 echo $APPS >&2 exit 0 fi if [[ "$app" == "list" ]]; then echo $USAGE >&2 exit 0 fi if [ ! "$(which $app)" ]; then current_version=0.0.0 echo "$app: not installed" else current_version=$($app --version | grep -oE "[0-9\.]+") echo "$app: found $current_version" fi latest_version=$(curl -s "https://github.com/sharkdp/${app}/releases/latest" | grep -oE '[0-9]+.[0-9\.]+') if [ "$2" ]; then latest_version=$2 fi if [[ "$current_version" == "$latest_version" ]]; then echo "$app: up-to-date" else echo "$app: new version found $latest_version" echo "$app: downloading..." arch="$(uname -m)" filename="${app}-v${latest_version}-${arch}-unknown-linux-musl" curl -fsSLo "${filename}.tar.gz" "https://github.com/sharkdp/${app}/releases/download/v${latest_version}/${filename}.tar.gz" tar -zxvf "${filename}.tar.gz" "${filename}/${app}" mv "${filename}/${app}" "${HOME}/.local/bin/" rm -r "${filename}" rm "${filename}.tar.gz" fi