Update shell script styles and update versions

main
Buddy Sandidge 2 years ago
parent c9004e963e
commit 5f5e995fbd

@ -12,7 +12,6 @@ alias +x='chmod +x'
alias rsync-win='rsync --recursive --verbose --times --modify-window=1 ' alias rsync-win='rsync --recursive --verbose --times --modify-window=1 '
alias simple-http-server='python3 -m http.server' alias simple-http-server='python3 -m http.server'
# shellcheck disable=SC1004
alias wget-opendir='wget --recursive --level 0 --continue --no-clobber \ alias wget-opendir='wget --recursive --level 0 --continue --no-clobber \
--no-parent --execute robots=off --random-wait --limit-rate=800k \ --no-parent --execute robots=off --random-wait --limit-rate=800k \
--reject=html,htm,index' --reject=html,htm,index'
@ -22,8 +21,8 @@ alias take='sudo chown $(whoami):$(whoami) '
alias pretty_json='jq --compact-output | prettier --parser json | bat --language json' alias pretty_json='jq --compact-output | prettier --parser json | bat --language json'
if [[ $(uname) == Linux ]]; then if [[ $(uname) == Linux ]]; then
alias ls='ls --color=auto' alias ls='ls --color=auto'
alias grep='grep --color=auto' alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto' alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto' alias egrep='egrep --color=auto'
fi fi

@ -2,23 +2,23 @@
#ft=bash #ft=bash
# always save bash history before showing prompt; allow reloading bashrc # always save bash history before showing prompt; allow reloading bashrc
if [[ ! "$PROMPT_COMMAND" =~ "history -a" ]]; then if [[ ! $PROMPT_COMMAND =~ "history -a" ]]; then
PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND" PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
fi fi
# Disable capslock # Disable capslock
if [[ -x $(which setxkbmap) ]] && [[ $(uname) == Linux ]]; then if [[ -x $(which setxkbmap) ]] && [[ $(uname) == Linux ]]; then
setxkbmap -option ctrl:nocaps setxkbmap -option ctrl:nocaps
fi fi
# make less more friendly for non-text input files, see lesspipe(1) # make less more friendly for non-text input files, see lesspipe(1)
if [ -x /usr/bin/lesspipe ]; then if [ -x /usr/bin/lesspipe ]; then
eval "$(SHELL=/bin/sh lesspipe)" eval "$(SHELL=/bin/sh lesspipe)"
fi fi
# enable color support of ls and also add handy aliases # enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then if [ -x /usr/bin/dircolors ]; then
if test -r ~/.dircolors ; then if test -r ~/.dircolors; then
eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
fi fi
fi fi

@ -2,27 +2,27 @@
# shellcheck disable=SC1091 # shellcheck disable=SC1091
if [ -f /etc/bash_completion ]; then if [ -f /etc/bash_completion ]; then
source /etc/bash_completion source /etc/bash_completion
fi fi
# shellcheck disable=SC1091 # shellcheck disable=SC1091
if [ -f /usr/local/etc/bash_completion ]; then if [ -f /usr/local/etc/bash_completion ]; then
source /usr/local/etc/bash_completion source /usr/local/etc/bash_completion
fi fi
COMPLETION_DIR=/usr/local/etc/bash_completion.d/ COMPLETION_DIR=/usr/local/etc/bash_completion.d/
if [ -d "$COMPLETION_DIR" ]; then if [ -d "$COMPLETION_DIR" ]; then
# shellcheck disable=SC2045 # shellcheck disable=SC2045
for i in $(ls "$COMPLETION_DIR"); do for i in $(ls "$COMPLETION_DIR"); do
file="$COMPLETION_DIR/$i" file="$COMPLETION_DIR/$i"
if [ -r "${file}" ]; then if [ -r "${file}" ]; then
# shellcheck disable=SC1090 # shellcheck disable=SC1090
source "${file}" source "${file}"
fi fi
unset file unset file
done done
unset i unset i
fi fi
unset COMPLETION_DIR unset COMPLETION_DIR

@ -2,29 +2,17 @@
#ft=bash #ft=bash
function min-jpg { function min-jpg {
if ! command -v jpegtran &> /dev/null ; then min_jpg "${@}"
echo "jpegtran not installed"
fi
tmpfile="$(mktemp)"
ogfile="$1"
jpegtran -optimize -perfect -outfile "$tmpfile" "$ogfile"
mv "$tmpfile" "$ogfile"
} }
function min-png { function min-png {
if ! command -v pngcrush &> /dev/null ; then min_png "${@}"
echo "pngcrush not installed"
fi
tmpfile="$(mktemp)"
ogfile="$1"
pngcrush -rem alla -reduce -brute "$ogfile" "$tmpfile"
mv "$tmpfile" "$ogfile"
} }
function get-create-date { function get-create-date {
date -r "$1" +"%F" get_create_date "${@}"
} }
function add-date-prefix { function add-date-prefix {
add_date_prefix "$1" "$2" add_date_prefix "${@}"
} }

@ -2,7 +2,7 @@
#ft=bash #ft=bash
if [[ -d "${XDG_DATA_HOME}/JetBrains/Toolbox/scripts" ]]; then if [[ -d "${XDG_DATA_HOME}/JetBrains/Toolbox/scripts" ]]; then
if [[ ":${PATH}:" != *":${XDG_DATA_HOME}/JetBrains/Toolbox/scripts:"* ]]; then if [[ ":${PATH}:" != *":${XDG_DATA_HOME}/JetBrains/Toolbox/scripts:"* ]]; then
export PATH="${PATH}:${XDG_DATA_HOME}/JetBrains/Toolbox/scripts" export PATH="${PATH}:${XDG_DATA_HOME}/JetBrains/Toolbox/scripts"
fi fi
fi fi

@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#ft=bash #ft=bash
if [[ ! "${BASH_VERSION}" = "3.2*" ]]; then if [[ ${BASH_VERSION} != "3.2*" ]]; then
shopt -s autocd shopt -s autocd
fi fi
# append to the history file, don't overwrite it # append to the history file, don't overwrite it

@ -1,83 +1,121 @@
#ft=sh #ft=sh
#shellcheck shell=sh
if type nvim >/dev/null 2>/dev/null ; then if type nvim >/dev/null 2>/dev/null; then
export EDITOR=nvim export EDITOR=nvim
alias vim=nvim alias vim=nvim
else else
export EDITOR=vim export EDITOR=vim
fi fi
slugify () ( source_env_file() {
if [ "$#" -ne 0 ] ; then if [ ! -f "${1}" ]; then
echo "$@" | slugify return
else fi
iconv --to-code ascii//TRANSLIT | eval "$(
sed -E 's/[^a-zA-Z0-9]+/-/g' | grep -v '^\s*\#' "${1}" |
sed -E 's/^-+\|-+$//g' | grep -v '^\s*$' |
tr '[:upper:]' '[:lower:]' sed 's/^\s*export//g' |
fi sed 's/^/export /g'
)"
}
add_date_prefix() (
DIR=$(dirname "$1")
FILE=$(basename "$1")
DATE=$(date -r "$1" +"%F")
if [ ! -f "$1" ]; then
echo "unknown file: $1"
exit 1
fi
mv "$1" "$DIR/${DATE}_${FILE}"
) )
source_env_file () { get_bitrate() (
if [ ! -f "${1}" ]; then if [ ! -f "$1" ]; then
return echo "[ERROR] unknown file: $1"
fi exit 1
eval "$( fi
grep -v '^\s*\#' "${1}" | if ! command -v exiftool >/dev/null; then
grep -v '^\s*$' | echo "[ERROR] exiftool not installed"
sed 's/^\s*export//g' | exit 1
sed 's/^/export /g' fi
)" exiftool -AudioBitrate "$1" | awk '{print $4}'
} )
json_to_yaml() (
ARG=${1-}
if [ -z "${ARG}" ]; then
dasel --read json --write yaml | bat --language yaml
elif [ -f "${ARG}" ]; then
dasel --read json --write yaml --file "${ARG}" | bat --language yaml
else
echo "${ARG}" | dasel --read json --write yaml | bat --language yaml
fi
)
yaml_to_json() (
ARG=${1-}
if [ -z "${ARG}" ]; then
dasel --read yaml --write json | bat --language json
elif [ -f "${ARG}" ]; then
dasel --read yaml --write json --file "${ARG}" | bat --language json
else
echo "${ARG}" | dasel --read yaml --write json | bat --language json
fi
)
github_releases() (
USER=${1}
REPO=${2-}
if [ -z "${REPO}" ]; then
USER=$(echo "${1}" | sed 's|/| |g' | awk '{print $1}')
REPO=$(echo "${1}" | sed 's|/| |g' | awk '{print $2}')
fi
curl --silent --header "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/${USER}/${REPO}/releases"
)
add_date_prefix () ( command_installed() (
DIR=$(dirname "$1") set -ue
FILE=$(basename "$1") cmd=${1}
DATE=$(date -r "$1" +"%F") if ! command -v "${cmd}" 1>&2 >/dev/null; then
if [ ! -f "$1" ] ; then echo "${cmd} not installed" 1>&2
echo "unknown file: $1" exit 1
exit 1 fi
fi
mv "$1" "$DIR/${DATE}_${FILE}"
) )
get_bitrate () ( min_jpg() (
if [ ! -f "$1" ] ; then set -ue
echo "[ERROR] unknown file: $1" command_installed jpegtran
exit 1 file=$1
fi out_file=$(mktemp)
if ! command -v exiftool > /dev/null ; then jpegtran -optimize -perfect -outfile "$out_file" "$file"
echo "[ERROR] exiftool not installed" mv "$out_file" "$file"
exit 1
fi
exiftool -AudioBitrate "$1" | awk '{print $4}'
) )
json_to_yaml () ( min_png() (
ARG=${1:-} set -ue
if [ -z "${ARG}" ] ; then command_installed pngcrush
dasel --read json --write yaml | bat --language yaml out_file=$(mktemp)
elif [ -f "${ARG}" ] ; then file=$1
dasel --read json --write yaml --file "${ARG}" | bat --language yaml pngcrush -rem alla -reduce -brute "$file" "$out_file"
else mv "$out_file" "$file"
echo "${ARG}" | dasel --read json --write yaml | bat --language yaml
fi
) )
yaml_to_json () ( get_create_date() (
ARG=${1:-} date -r "$1" +"%F"
if [ -z "${ARG}" ] ; then
dasel --read yaml --write json | bat --language json
elif [ -f "${ARG}" ] ; then
dasel --read yaml --write json --file "${ARG}" | bat --language json
else
echo "${ARG}" | dasel --read yaml --write json | bat --language json
fi
) )
github_releases () ( #shellcheck disable=SC2120
USER=${1} slugify() (
REPO=${2} if [ "$#" -ne 0 ]; then
curl --silent --header "Accept: application/vnd.github.v3+json" \ #shellcheck disable=SC2119
"https://api.github.com/repos/${USER}/${REPO}/releases" echo "$@" | slugify
else
iconv --to-code ascii//TRANSLIT |
sed -E 's/[^a-zA-Z0-9]+/-/g' |
sed -E 's/^-+\|-+$//g' |
tr '[:upper:]' '[:lower:]'
fi
) )

@ -1,31 +1,31 @@
#!/usr/bin/env bash #!/usr/bin/env bash
latest_download () ( latest_download() (
FILTER='import "github" as gh; gh::latest_download(env.OS; env.ARCH)' FILTER='import "github" as gh; gh::latest_download(env.OS; env.ARCH)'
OS=${2} ARCH="${3}" jq --raw-output "${FILTER}" <"$(release_json "${1}")" OS=${2} ARCH="${3}" jq --raw-output "${FILTER}" <"$(release_json "${1}")"
) )
latest_type () ( latest_type() (
FILTER='import "github" as gh; gh::latest_type(env.OS; env.ARCH)' FILTER='import "github" as gh; gh::latest_type(env.OS; env.ARCH)'
OS=${2} ARCH="${3}" jq --raw-output "${FILTER}" <"$(release_json "${1}")" OS=${2} ARCH="${3}" jq --raw-output "${FILTER}" <"$(release_json "${1}")"
) )
latest_version () ( latest_version() (
FILTER='import "github" as gh; gh::latest_version' FILTER='import "github" as gh; gh::latest_version'
jq --raw-output "${FILTER}" <"$(release_json "${1}")" jq --raw-output "${FILTER}" <"$(release_json "${1}")"
) )
age_in_seconds () ( age_in_seconds() (
echo $(( $(date +"%s") - $(stat -c "%Y" "${1}") )) echo $(($(date +"%s") - $(stat -c "%Y" "${1}")))
) )
release_json () ( release_json() (
DAY=$((60 * 60 * 24)) DAY=$((60 * 60 * 24))
PROJECT=$1 PROJECT=$1
JSON=${XDG_CACHE_HOME}/apps/meta/${PROJECT}/releases.json JSON=${XDG_CACHE_HOME}/apps/meta/${PROJECT}/releases.json
mkdir -p "$(dirname "${JSON}")" mkdir -p "$(dirname "${JSON}")"
if [[ ! -f "${JSON}" || "$(age_in_seconds "${JSON}")" -gt "${DAY}" ]]; then if [[ ! -f ${JSON} || "$(age_in_seconds "${JSON}")" -gt ${DAY} ]]; then
curl --silent --output "${JSON}" "https://api.github.com/repos/${PROJECT}/releases" curl --silent --output "${JSON}" "https://api.github.com/repos/${PROJECT}/releases"
fi fi
echo "${JSON}" echo "${JSON}"
) )

@ -1,178 +1,184 @@
#ft=bash #ft=bash
bail () ( bail() (
>&2 echo "ERROR: $1" echo >&2 "ERROR: $1"
exit 1 exit 1
) )
must_be_root () ( must_be_root() (
if [ "$(id --user)" != 0 ]; then if [ "$(id --user)" != 0 ]; then
bail "must run as root" bail "must run as root"
fi fi
) )
set_link () ( set_link() (
TARGET=${1} TARGET=${1}
APP_DIR=${2} APP_DIR=${2}
APP_PATH=${3:-} APP_PATH=${3-}
pushd "$(dirname "${TARGET}")" >/dev/null || exit 1 pushd "$(dirname "${TARGET}")" >/dev/null || exit 1
unlink_if_set "${TARGET}" unlink_if_set "${TARGET}"
REL_PATH=$(relative_path "$(dirname "${TARGET}")" "${APP_DIR}/current/${APP_PATH}") REL_PATH=$(relative_path "$(dirname "${TARGET}")" "${APP_DIR}/current/${APP_PATH}")
ln -s "${REL_PATH}" "$(basename "${TARGET}")" ln -s "${REL_PATH}" "$(basename "${TARGET}")"
popd >/dev/null || exit 1 popd >/dev/null || exit 1
) )
get_os () ( get_os() (
case $(uname -s) in case $(uname -s) in
Linux*) echo linux;; Linux*) echo linux ;;
Darwin*) echo darwin;; Darwin*) echo darwin ;;
Dragonfly*) echo dragonfly;; Dragonfly*) echo dragonfly ;;
FreeBSD*) echo freebsd;; FreeBSD*) echo freebsd ;;
NetBSD*) echo netbsd;; NetBSD*) echo netbsd ;;
OpenBSD*) echo openbsd;; OpenBSD*) echo openbsd ;;
SunOS*) echo solaris;; SunOS*) echo solaris ;;
Windows_NT*) echo windows;; Windows_NT*) echo windows ;;
CYGWIN_NT*) echo windows;; CYGWIN_NT*) echo windows ;;
*) >&2 echo "unsupported os"; return; *)
esac echo >&2 "unsupported os"
return
;;
esac
) )
get_arch () ( get_arch() (
case $(uname -m) in case $(uname -m) in
x86_64*) echo amd64;; x86_64*) echo amd64 ;;
amd64*) echo amd64;; amd64*) echo amd64 ;;
i386*) echo 386;; i386*) echo 386 ;;
i686*) echo 386;; i686*) echo 386 ;;
arm) echo arm;; arm) echo arm ;;
armv7*) echo arm;; armv7*) echo arm ;;
armv6*) echo arm;; armv6*) echo arm ;;
armv8*) echo arm;; armv8*) echo arm ;;
aarch64*) echo arm64;; aarch64*) echo arm64 ;;
*) >&2 echo "unsupported architecture: $(uname -m)"; exit 1;; *)
esac echo >&2 "unsupported architecture: $(uname -m)"
exit 1
;;
esac
) )
set_current_link () ( set_current_link() (
prefix=${1} prefix=${1}
version=${2} version=${2}
sudo=${3:-} sudo=${3-}
current="${prefix}/current" current="${prefix}/current"
if [ -L "${current}" ] ; then if [ -L "${current}" ]; then
$sudo unlink "${current}" $sudo unlink "${current}"
fi fi
rel="$(relative_path "${prefix}" "${prefix}/${version}")" rel="$(relative_path "${prefix}" "${prefix}/${version}")"
$sudo ln -s "$rel" "${current}" $sudo ln -s "$rel" "${current}"
) )
unlink_if_set () ( unlink_if_set() (
dir=$1 dir=$1
sudo=${2:-} sudo=${2-}
if [ -L "${dir}" ]; then if [ -L "${dir}" ]; then
# shellcheck disable=SC2086 # shellcheck disable=SC2086
${sudo} unlink "${dir}" ${sudo} unlink "${dir}"
fi fi
) )
mkdir_if_missing () ( mkdir_if_missing() (
dir=${1} dir=${1}
sudo=${2:-} sudo=${2-}
if [ ! -d "${dir}" ]; then if [ ! -d "${dir}" ]; then
# shellcheck disable=SC2086 # shellcheck disable=SC2086
$sudo mkdir -p "${dir}" $sudo mkdir -p "${dir}"
fi fi
) )
extract_zip () ( extract_zip() (
url=${1} url=${1}
dest=${2} dest=${2}
args=${3:-} args=${3-}
sudo=${4:-} sudo=${4-}
if [ -d "${dest}" ]; then if [ -d "${dest}" ]; then
return return
fi fi
mkdir_if_missing "${dest}" "${sudo}" mkdir_if_missing "${dest}" "${sudo}"
tmp_dir="$(mktemp -d)" tmp_dir="$(mktemp -d)"
zipfile=${tmp_dir}/release.zip zipfile=${tmp_dir}/release.zip
curl --silent --location --output "${zipfile}" "${url}" curl --silent --location --output "${zipfile}" "${url}"
# shellcheck disable=SC2086 # shellcheck disable=SC2086
$sudo unzip -o "${zipfile}" -d "${dest}" ${args} $sudo unzip -o "${zipfile}" -d "${dest}" ${args}
rm -rf "${tmp_dir}" rm -rf "${tmp_dir}"
) )
extract_tarball () ( extract_tarball() (
url=${1} url=${1}
dest=${2} dest=${2}
args=${3:-} args=${3-}
sudo=${4:-} sudo=${4-}
if [ -d "${dest}" ]; then if [ -d "${dest}" ]; then
return return
fi fi
mkdir_if_missing "${dest}" "${sudo}" mkdir_if_missing "${dest}" "${sudo}"
tmp_dir="$(mktemp -d)" tmp_dir="$(mktemp -d)"
tarball=${tmp_dir}/release.tar.gz tarball=${tmp_dir}/release.tar.gz
curl --silent --location --output "${tarball}" "${url}" curl --silent --location --output "${tarball}" "${url}"
# shellcheck disable=SC2086 # shellcheck disable=SC2086
$sudo tar xf "${tarball}" --directory "${dest}" ${args} $sudo tar xf "${tarball}" --directory "${dest}" ${args}
rm -rf "${tmp_dir}" rm -rf "${tmp_dir}"
) )
extract_binary () ( extract_binary() (
url=${1} url=${1}
dest=${2} dest=${2}
sudo=${3:-} sudo=${3-}
if [ -f "${dest}" ]; then if [ -f "${dest}" ]; then
return return
fi fi
mkdir_if_missing "$(dirname "${dest}")" "${sudo}" mkdir_if_missing "$(dirname "${dest}")" "${sudo}"
tmp_file="$(mktemp)" tmp_file="$(mktemp)"
curl --silent --location --output "${tmp_file}" "${url}" curl --silent --location --output "${tmp_file}" "${url}"
$sudo chmod +x "${tmp_file}" $sudo chmod +x "${tmp_file}"
$sudo mv "${tmp_file}" "${dest}" $sudo mv "${tmp_file}" "${dest}"
) )
relative_path() ( relative_path() (
# both $1 and $2 are absolute paths beginning with / # both $1 and $2 are absolute paths beginning with /
# $1 must be a canonical path; that is none of its directory # $1 must be a canonical path; that is none of its directory
# components may be ".", ".." or a symbolic link # components may be ".", ".." or a symbolic link
# #
# returns relative path to $2/$target from $1/$src # returns relative path to $2/$target from $1/$src
src=$1 src=$1
target=$2 target=$2
common_part=$src common_part=$src
result= result=
while [ "${target#"$common_part"}" = "$target" ]; do while [ "${target#"$common_part"}" = "$target" ]; do
# no match, means that candidate common part is not correct # no match, means that candidate common part is not correct
# go up one level (reduce common part) # go up one level (reduce common part)
common_part=$(dirname "$common_part") common_part=$(dirname "$common_part")
# and record that we went back, with correct / handling # and record that we went back, with correct / handling
if [ -z "$result" ]; then if [ -z "$result" ]; then
result=.. result=..
else else
result=../$result result=../$result
fi fi
done done
if [ "$common_part" = / ]; then if [ "$common_part" = / ]; then
# special case for root (no common path) # special case for root (no common path)
result=$result/ result=$result/
fi fi
# since we now have identified the common part, # since we now have identified the common part,
# compute the non-common part # compute the non-common part
forward_part=${target#"$common_part"} forward_part=${target#"$common_part"}
# and now stick all parts together # and now stick all parts together
if [ -n "$result" ] && [ -n "$forward_part" ]; then if [ -n "$result" ] && [ -n "$forward_part" ]; then
result=$result$forward_part result=$result$forward_part
elif [ -n "$forward_part" ]; then elif [ -n "$forward_part" ]; then
# extra slash removal # extra slash removal
result=${forward_part#?} result=${forward_part#?}
fi fi
printf '%s' "$result" printf '%s' "$result"
) )

@ -2,7 +2,7 @@
set -euo pipefail set -euo pipefail
# shellcheck disable=SC1090 # shellcheck disable=SC1091
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
APP=aax-to-mp3 APP=aax-to-mp3
@ -10,7 +10,7 @@ VERSION=${VERSION:-1.3}
DEST=${XDG_DATA_HOME}/apps/releases/${APP} DEST=${XDG_DATA_HOME}/apps/releases/${APP}
URL=https://github.com/KrumpetPirate/AAXtoMP3/releases/download/v${VERSION}/AAXtoMP3-v${VERSION}.tar.gz URL=https://github.com/KrumpetPirate/AAXtoMP3/releases/download/v${VERSION}/AAXtoMP3-v${VERSION}.tar.gz
extract_tarball "${URL}" "${DEST}/${VERSION}" "--strip-component 1" extract_tarball "${URL}" "${DEST}/${VERSION}" "--strip-component 1"
set_current_link "${DEST}" "${VERSION}" set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/AAXtoMP3" "${DEST}" AAXtoMP3 set_link "${XDG_BIN_HOME}/AAXtoMP3" "${DEST}" AAXtoMP3
set_link "${XDG_BIN_HOME}/interactiveAAXtoMP3" "${DEST}" interactiveAAXtoMP3 set_link "${XDG_BIN_HOME}/interactiveAAXtoMP3" "${DEST}" interactiveAAXtoMP3

@ -1,14 +1,16 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# shellcheck disable=SC1090 set -euo pipefail
# shellcheck disable=SC1091
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
APP=age APP=age
VERSION=${VERSION:-1.1.1} VERSION=${VERSION:-1.1.1}
DEST="${XDG_DATA_HOME}/apps/releases/${APP}" DEST=${XDG_DATA_HOME}/apps/releases/${APP}
URL=https://github.com/FiloSottile/age/releases/download/v${VERSION}/age-v${VERSION}-$(get_os)-$(get_arch).tar.gz URL=https://github.com/FiloSottile/age/releases/download/v${VERSION}/age-v${VERSION}-$(get_os)-$(get_arch).tar.gz
extract_tarball "${URL}" "${DEST}/${VERSION}" "--strip-components 1" extract_tarball "${URL}" "${DEST}/${VERSION}" "--strip-components 1"
set_current_link "${DEST}" "${VERSION}" set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/age" "${DEST}" age set_link "${XDG_BIN_HOME}/age" "${DEST}" age
set_link "${XDG_BIN_HOME}/age-keygen" "${DEST}" age-keygen set_link "${XDG_BIN_HOME}/age-keygen" "${DEST}" age-keygen

@ -1,21 +1,31 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# shellcheck disable=SC1090 set -euo pipefail
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
get_arch () {
case $(uname -m) in
x86_64*) echo amd64;;
*) >&2 echo "unsupported architecture: $(uname -m)"; exit 1;;
esac
}
# shellcheck disable=SC1091
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
APP=cmctl APP=cmctl
VERSION=${VERSION:-1.6.1} VERSION=${VERSION:-1.6.1}
DEST="${XDG_DATA_HOME}/apps/releases/${APP}" DEST=${XDG_DATA_HOME}/apps/releases/${APP}
URL=https://github.com/jetstack/cert-manager/releases/download/v${VERSION}/cmctl-$(get_os)-$(get_arch).tar.gz
main() (
set -x
URL=https://github.com/cert-manager/cert-manager/releases/download/v${VERSION}/cmctl-$(get_os)-$(get_arch).tar.gz
extract_tarball "${URL}" "${DEST}/${VERSION}"
set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}"
)
get_arch() (
case $(uname -m) in
x86_64*) echo amd64 ;;
*)
echo >&2 "unsupported architecture: $(uname -m)"
exit 1
;;
esac
)
extract_tarball "${URL}" "${DEST}/${VERSION}" main "${@}"
set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}"

@ -1,24 +1,34 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# shellcheck disable=SC1090 set -euo pipefail
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
get_arch () { # shellcheck disable=SC1091
case $(uname -m) in source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
x86_64*) echo amd64;;
*) >&2 echo "unsupported architecture: $(uname -m)"; exit 1;;
esac
}
APP=chezmoi APP=chezmoi
VERSION=${VERSION:-2.22.1} VERSION=${VERSION:-2.33.6}
DEST="${XDG_DATA_HOME}/apps/releases/${APP}" DEST=${XDG_DATA_HOME}/apps/releases/${APP}
URL=https://github.com/twpayne/chezmoi/releases/download/v${VERSION}/chezmoi_${VERSION}_$(get_os)_$(get_arch).tar.gz
main() (
URL=https://github.com/twpayne/chezmoi/releases/download/v${VERSION}/chezmoi_${VERSION}_$(get_os)_$(get_arch).tar.gz
extract_tarball "${URL}" "${DEST}/${VERSION}"
set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}"
set_link "${XDG_CONFIG_HOME}/bash/bashrc.d/chezmoi.sh" "${DEST}" "completions/chezmoi-completion.bash"
set_link "${XDG_CONFIG_HOME}/zsh/zshrc.d/chezmoi.zsh" "${DEST}" "completions/chezmoi.zsh"
set_link "${XDG_CONFIG_HOME}/fish/completions/chezmoi.fish" "${DEST}" "completions/chezmoi.fish"
set_link "${XDG_DATA_HOME}/doc/chezmoi" "${DEST}" "docs"
)
get_arch() (
case $(uname -m) in
x86_64*) echo amd64 ;;
*)
echo >&2 "unsupported architecture: $(uname -m)"
exit 1
;;
esac
)
extract_tarball "${URL}" "${DEST}/${VERSION}" main "${@}"
set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}"
set_link "${XDG_CONFIG_HOME}/bash/bashrc.d/chezmoi.sh" "${DEST}" "completions/chezmoi-completion.bash"
set_link "${XDG_CONFIG_HOME}/zsh/zshrc.d/chezmoi.zsh" "${DEST}" "completions/chezmoi.zsh"
set_link "${XDG_CONFIG_HOME}/fish/completions/chezmoi.fish" "${DEST}" "completions/chezmoi.fish"
set_link "${XDG_DATA_HOME}/doc/chezmoi" "${DEST}" "docs"

@ -1,22 +1,32 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# shellcheck disable=SC1090 set -euo pipefail
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
get_arch () ( # shellcheck disable=SC1091
case $(uname -m) in source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
x86_64*) echo amd64;;
*) >&2 echo "unsupported architecture: $(uname -m)"; exit 1;;
esac
)
APP=dasel APP=dasel
VERSION=${VERSION:-2.2.0} VERSION=${VERSION:-2.2.0}
DEST=${XDG_DATA_HOME}/apps/releases/${APP} DEST=${XDG_DATA_HOME}/apps/releases/${APP}
URL=https://github.com/TomWright/dasel/releases/download/v${VERSION}/dasel_$(get_os)_$(get_arch)
mkdir_if_missing "${DEST}/${VERSION}" main() (
curl --silent --location --output "${DEST}/${VERSION}/dasel" "${URL}" URL=https://github.com/TomWright/dasel/releases/download/v${VERSION}/dasel_$(get_os)_$(get_arch)
chmod 755 "${DEST}/${VERSION}/dasel"
set_current_link "${DEST}" "${VERSION}" mkdir_if_missing "${DEST}/${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}" curl --silent --location --output "${DEST}/${VERSION}/dasel" "${URL}"
chmod 755 "${DEST}/${VERSION}/dasel"
set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}"
)
get_arch() (
case $(uname -m) in
x86_64*) echo amd64 ;;
*)
echo >&2 "unsupported architecture: $(uname -m)"
exit 1
;;
esac
)
main "${@}"

@ -1,20 +1,31 @@
#!/usr/bin/env bash #!/usr/bin/env bash
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" set -euo pipefail
function get_os () { # shellcheck disable=SC1091
case $(uname -s) in source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
Linux*) echo unknown-linux-gnu;;
Darwin*) echo apple-darwin;;
*) >&2 echo "unsupported os: $(uname -s)"; exit 1;;
esac
}
APP=dust APP=dust
VERSION=${VERSION:-0.6.2} VERSION=${VERSION:-0.8.6}
DEST="${XDG_DATA_HOME}/apps/releases/${APP}" DEST=${XDG_DATA_HOME}/apps/releases/${APP}
URL="https://github.com/bootandy/dust/releases/download/v${VERSION}/dust-v${VERSION}-$(uname -m)-$(get_os).tar.gz"
main() (
URL=https://github.com/bootandy/dust/releases/download/v${VERSION}/dust-v${VERSION}-$(uname -m)-$(get_os).tar.gz
extract_tarball "${URL}" "${DEST}/${VERSION}" "--strip-component 1"
set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}"
)
get_os() (
case $(uname -s) in
Linux*) echo unknown-linux-gnu ;;
Darwin*) echo apple-darwin ;;
*)
echo >&2 "unsupported os: $(uname -s)"
exit 1
;;
esac
)
extract_tarball "${URL}" "${DEST}/${VERSION}" "--strip-component 1" main "${@}"
set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}"

@ -1,12 +1,12 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -euo pipefail
# shellcheck disable=SC1090 # shellcheck disable=SC1091
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
APP=etcd APP=etcd
VERSION=${VERSION:-v3.4.15} VERSION=${VERSION:-v3.5.9}
APPS_DIR=/usr/local/apps/${APP} APPS_DIR=/usr/local/apps/${APP}
URL=https://github.com/etcd-io/etcd/releases/download/${VERSION}/etcd-${VERSION}-$(get_os)-$(get_arch).tar URL=https://github.com/etcd-io/etcd/releases/download/${VERSION}/etcd-${VERSION}-$(get_os)-$(get_arch).tar
@ -16,9 +16,9 @@ set_current_link "${APPS_DIR}" "${VERSION}" sudo
apps=$(find ${APPS_DIR}/current/ -maxdepth 1 -executable -type f -exec basename {} \;) apps=$(find ${APPS_DIR}/current/ -maxdepth 1 -executable -type f -exec basename {} \;)
cd /usr/local/bin cd /usr/local/bin
for bin in $apps; do for bin in $apps; do
if [[ ! -s $bin ]]; then if [[ ! -s $bin ]]; then
sudo ln --symbolic \ sudo ln --symbolic \
"$(relative_path "/usr/local/bin" "${APPS_DIR}/current/${bin}")" \ "$(relative_path "/usr/local/bin" "${APPS_DIR}/current/${bin}")" \
"${bin}" "${bin}"
fi fi
done done

@ -1,22 +1,30 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -euo pipefail
# shellcheck disable=SC1090 # shellcheck disable=SC1091
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
get_arch () {
case $(uname -m) in
x86_64*) echo amd64;;
*) >&2 echo "unsupported architecture: $(uname -m)"; exit 1;;
esac
}
APP=evans APP=evans
VERSION=${VERSION:-0.10.2} VERSION=${VERSION:-v0.10.11}
DEST="${XDG_DATA_HOME}/apps/releases/${APP}" DEST=${XDG_DATA_HOME}/apps/releases/${APP}
URL=https://github.com/ktr0731/evans/releases/download/${VERSION}/evans_$(get_os)_$(get_arch).tar.gz
main() (
URL=https://github.com/ktr0731/evans/releases/download/${VERSION}/evans_$(get_os)_$(get_arch).tar.gz
extract_tarball "${URL}" "${DEST}/${VERSION}"
set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}"
)
get_arch() (
case $(uname -m) in
x86_64*) echo amd64 ;;
*)
echo >&2 "unsupported architecture: $(uname -m)"
exit 1
;;
esac
)
extract_tarball "${URL}" "${DEST}/${VERSION}" main "${@}"
set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}"

@ -2,35 +2,46 @@
set -euo pipefail set -euo pipefail
# shellcheck disable=SC1090 # shellcheck disable=SC1091
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
get_os () ( APP=geckodriver
case $(uname -s) in VERSION=${VERSION:-0.33.0}
Linux*) echo linux;; DEST=${XDG_DATA_HOME}/apps/releases/${APP}
Darwin*) echo macos;;
Windows_NT*) echo win;; main() (
CYGWIN_NT*) echo win;; URL=https://github.com/mozilla/geckodriver/releases/download/v${VERSION}/geckodriver-v${VERSION}-$(get_os)$(get_arch).tar.gz
*) >&2 echo "unsupported os"; exit 1;
esac extract_tarball "${URL}" "${DEST}/${VERSION}"
set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" ${APP}
) )
get_arch () ( get_os() (
case $(uname -m) in case $(uname -s) in
x86_64*) echo 64;; Linux*) echo linux ;;
amd64*) echo 64;; Darwin*) echo macos ;;
i386*) echo 32;; Windows_NT*) echo win ;;
i686*) echo 32;; CYGWIN_NT*) echo win ;;
aarch64*) echo aarch64;; *)
*) >&2 echo "unsupported architecture: $(uname -m)"; exit 1;; echo >&2 "unsupported os"
esac exit 1
;;
esac
) )
APP=geckodriver get_arch() (
VERSION=${VERSION:-0.31.0} case $(uname -m) in
DEST=${XDG_DATA_HOME}/apps/releases/${APP} x86_64*) echo 64 ;;
URL=https://github.com/mozilla/geckodriver/releases/download/v${VERSION}/geckodriver-v${VERSION}-$(get_os)$(get_arch).tar.gz amd64*) echo 64 ;;
i386*) echo 32 ;;
i686*) echo 32 ;;
aarch64*) echo aarch64 ;;
*)
echo >&2 "unsupported architecture: $(uname -m)"
exit 1
;;
esac
)
extract_tarball "${URL}" "${DEST}/${VERSION}" main "${@}"
set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" ${APP}

@ -1,36 +1,46 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# shellcheck disable=SC1090 set -euo pipefail
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
function get_os () { # shellcheck disable=SC1091
case $(uname -s) in source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
Linux*) echo linux;;
Darwin*) echo darwin-10.12;;
*) >&2 echo "unsupported os: $(uname -s)"; exit 1;;
esac
}
APP=gitea APP=gitea
DEST=${XDG_DATA_HOME}/apps/releases/${APP} DEST=${XDG_DATA_HOME}/apps/releases/${APP}
CURRENT=${DEST}/current CURRENT=${DEST}/current
VERSION=${VERSION:-1.19.0} VERSION=${VERSION:-1.19.0}
URL=https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-$(get_os)-$(get_arch).xz
main() (
if [ ! -d "${DEST}/${VERSION}" ]; then URL=https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-$(get_os)-$(get_arch).xz
tmp_dir="$(mktemp -d)"
file=${tmp_dir}/gitea if [ ! -d "${DEST}/${VERSION}" ]; then
curl --silent --retry 5 --location --output "${file}.xz" "${URL}" tmp_dir="$(mktemp -d)"
xz --decompress "${file}.xz" file=${tmp_dir}/gitea
chmod 755 "${file}" curl --silent --retry 5 --location --output "${file}.xz" "${URL}"
mkdir -p "${DEST}/${VERSION}" xz --decompress "${file}.xz"
mv "${file}" "${DEST}/${VERSION}/${APP}" chmod 755 "${file}"
mkdir -p "${DEST}/${VERSION}"
rm -rf "${tmp_dir}" mv "${file}" "${DEST}/${VERSION}/${APP}"
fi
set_current_link "${DEST}" "${VERSION}" rm -rf "${tmp_dir}"
fi
unlink_if_set "${XDG_BIN_HOME}/${APP}" set_current_link "${DEST}" "${VERSION}"
cd "${XDG_BIN_HOME}" || exit 1
ln -s "$(relative_path "${XDG_BIN_HOME}" "${CURRENT}/${APP}")" "${APP}" unlink_if_set "${XDG_BIN_HOME}/${APP}"
cd - &> /dev/null || exit 1 cd "${XDG_BIN_HOME}" || exit 1
ln -s "$(relative_path "${XDG_BIN_HOME}" "${CURRENT}/${APP}")" "${APP}"
cd - &>/dev/null || exit 1
)
get_os() (
case $(uname -s) in
Linux*) echo linux ;;
Darwin*) echo darwin-10.12 ;;
*)
echo >&2 "unsupported os: $(uname -s)"
exit 1
;;
esac
)
main "${@}"

@ -1,38 +1,48 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# shellcheck disable=SC1090 set -euo pipefail
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
function get_os () { # shellcheck disable=SC1091
case $(uname -s) in source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
Linux*) echo linux;;
Darwin*) echo darwin-10.12;;
*) >&2 echo "unsupported os: $(uname -s)"; exit 1;;
esac
}
APP=gitea APP=gitea
DEST=/usr/local/apps/${APP} DEST=/usr/local/apps/${APP}
CURRENT=${DEST}/current CURRENT=${DEST}/current
VERSION=${VERSION:-1.19.0} VERSION=${VERSION:-1.19.0}
URL=https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-$(get_os)-$(get_arch).xz
BIN_DIR=/usr/local/bin BIN_DIR=/usr/local/bin
if [ ! -d "${DEST}/${VERSION}" ]; then main() (
tmp_dir="$(mktemp -d)" URL=https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-$(get_os)-$(get_arch).xz
file=${tmp_dir}/gitea
curl --silent --retry 10 --location --output "${file}.xz" "${URL}" if [ ! -d "${DEST}/${VERSION}" ]; then
xz --decompress "${file}.xz" tmp_dir="$(mktemp -d)"
chmod 755 "${file}" file=${tmp_dir}/gitea
sudo chown root:root "${file}" curl --silent --retry 10 --location --output "${file}.xz" "${URL}"
sudo mkdir -p "${DEST}/${VERSION}" xz --decompress "${file}.xz"
sudo mv "${file}" "${DEST}/${VERSION}/${APP}" chmod 755 "${file}"
sudo chown root:root "${file}"
rm -rf "${tmp_dir}" sudo mkdir -p "${DEST}/${VERSION}"
fi sudo mv "${file}" "${DEST}/${VERSION}/${APP}"
set_current_link "${DEST}" "${VERSION}" "sudo"
rm -rf "${tmp_dir}"
unlink_if_set "${BIN_DIR}/${APP}" "sudo" fi
cd "${BIN_DIR}" || exit 1 set_current_link "${DEST}" "${VERSION}" "sudo"
sudo ln -s "$(relative_path "${BIN_DIR}" "${CURRENT}/${APP}")" "${APP}"
cd - &> /dev/null || exit 1 unlink_if_set "${BIN_DIR}/${APP}" "sudo"
cd "${BIN_DIR}" || exit 1
sudo ln -s "$(relative_path "${BIN_DIR}" "${CURRENT}/${APP}")" "${APP}"
cd - &>/dev/null || exit 1
)
get_os() (
case $(uname -s) in
Linux*) echo linux ;;
Darwin*) echo darwin-10.12 ;;
*)
echo >&2 "unsupported os: $(uname -s)"
exit 1
;;
esac
)
main "${@}"

@ -1,20 +1,31 @@
#!/usr/bin/env bash #!/usr/bin/env bash
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" set -euo pipefail
function get_os () { # shellcheck disable=SC1091
case $(uname -s) in source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
Linux*) echo linux;;
Darwin*) echo macOS;;
*) >&2 echo "unsupported os: $(uname -s)"; exit 1;;
esac
}
APP=gotemplate APP=gotemplate
VERSION=${VERSION:-3.7.0} VERSION=${VERSION:-3.7.2}
DEST="${XDG_DATA_HOME}/apps/releases/${APP}" DEST="${XDG_DATA_HOME}/apps/releases/${APP}"
URL=https://github.com/coveooss/gotemplate/releases/download/v${VERSION}/gotemplate_${VERSION}_$(get_os)_64-bits.zip
extract_zip "${URL}" "${DEST}/${VERSION}" main() (
set_current_link "${DEST}" "${VERSION}" URL=https://github.com/coveooss/gotemplate/releases/download/v${VERSION}/gotemplate_${VERSION}_$(get_os)_64-bits.zip
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}"
extract_zip "${URL}" "${DEST}/${VERSION}"
set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}"
)
get_os() (
case $(uname -s) in
Linux*) echo linux ;;
Darwin*) echo macOS ;;
*)
echo >&2 "unsupported os: $(uname -s)"
exit 1
;;
esac
)
main "${@}"

@ -1,20 +1,30 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# shellcheck disable=SC1090 set -euo pipefail
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
get_arch () { # shellcheck disable=SC1091
case $(uname -m) in source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
x86_64*) echo 64bit;;
*) >&2 echo "unsupported architecture: $(uname -m)"; exit 1;;
esac
}
APP=hugo APP=hugo
VERSION=${VERSION:-0.88.1} VERSION=${VERSION:-0.111.3}
DEST="${XDG_DATA_HOME}/apps/releases/${APP}" DEST="${XDG_DATA_HOME}/apps/releases/${APP}"
URL=https://github.com/gohugoio/hugo/releases/download/v${VERSION}/hugo_extended_${VERSION}_$(uname)-$(get_arch).tar.gz
extract_tarball "${URL}" "${DEST}/${VERSION}" main() (
set_current_link "${DEST}" "${VERSION}" URL=https://github.com/gohugoio/hugo/releases/download/v${VERSION}/hugo_extended_${VERSION}_$(uname)-$(get_arch).tar.gz
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}"
extract_tarball "${URL}" "${DEST}/${VERSION}"
set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}"
)
get_arch() (
case $(uname -m) in
x86_64*) echo 64bit ;;
*)
echo >&2 "unsupported architecture: $(uname -m)"
exit 1
;;
esac
)
main "${@}"

@ -1,30 +1,37 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# shellcheck disable=SC1090 set -euo pipefail
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
set -e
get_arch () { # shellcheck disable=SC1091
case $(uname -m) in source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
x86_64*) echo amd64;;
arm64*) echo arm64;;
*) >&2 echo "unsupported architecture: $(uname -m)"; exit 1;;
esac
}
APP=kubectl APP=kubectl
# https://dl.k8s.io/release/stable.txt # https://dl.k8s.io/release/stable.txt
VERSION=${VERSION:-1.26.1} VERSION=${VERSION:-1.26.1}
DEST=${XDG_DATA_HOME}/apps/releases/${APP} DEST=${XDG_DATA_HOME}/apps/releases/${APP}
URL=https://dl.k8s.io/release/v${VERSION}/bin/$(get_os)/$(get_arch)/kubectl
APP_PATH=${DEST}/${VERSION}/kubectl APP_PATH=${DEST}/${VERSION}/kubectl
if [[ ! -f "${APP_PATH}" ]]; then
mkdir -p "${DEST}/${VERSION}"
curl --silent --location --output "${APP_PATH}" "${URL}"
chmod +x "${APP_PATH}"
fi
set_current_link "${DEST}" "${VERSION}" main() (
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}" URL=https://dl.k8s.io/release/v${VERSION}/bin/$(get_os)/$(get_arch)/kubectl
if [[ ! -f ${APP_PATH} ]]; then
mkdir -p "${DEST}/${VERSION}"
curl --silent --location --output "${APP_PATH}" "${URL}"
chmod +x "${APP_PATH}"
fi
set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}"
)
get_arch() (
case $(uname -m) in
x86_64*) echo amd64 ;;
arm64*) echo arm64 ;;
*)
echo >&2 "unsupported architecture: $(uname -m)"
exit 1
;;
esac
)
main "${@}"

@ -1,12 +1,12 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -euo pipefail
# shellcheck disable=SC1090 # shellcheck disable=SC1091
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
APP=lego APP=lego
VERSION=${VERSION:-v4.10.2} VERSION=${VERSION:-v4.11.0}
DEST=${XDG_DATA_HOME}/apps/releases/${APP} DEST=${XDG_DATA_HOME}/apps/releases/${APP}
URL=https://github.com/go-acme/lego/releases/download/${VERSION}/lego_${VERSION}_$(get_os)_$(get_arch).tar.gz URL=https://github.com/go-acme/lego/releases/download/${VERSION}/lego_${VERSION}_$(get_os)_$(get_arch).tar.gz

@ -1,12 +1,12 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -euo pipefail
# shellcheck disable=SC1090 # shellcheck disable=SC1091
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
APP=lego APP=lego
VERSION=${VERSION:-v4.10.2} VERSION=${VERSION:-v4.11.0}
APPS_DIR=/usr/local/apps/${APP} APPS_DIR=/usr/local/apps/${APP}
URL=https://github.com/go-acme/lego/releases/download/${VERSION}/lego_${VERSION}_$(get_os)_$(get_arch).tar.gz URL=https://github.com/go-acme/lego/releases/download/${VERSION}/lego_${VERSION}_$(get_os)_$(get_arch).tar.gz
@ -16,9 +16,9 @@ set_current_link "${APPS_DIR}" "${VERSION}" sudo
apps=$(find ${APPS_DIR}/current/ -maxdepth 1 -executable -type f -exec basename {} \;) apps=$(find ${APPS_DIR}/current/ -maxdepth 1 -executable -type f -exec basename {} \;)
cd /usr/local/bin cd /usr/local/bin
for bin in $apps; do for bin in $apps; do
if [[ ! -s $bin ]]; then if [[ ! -s $bin ]]; then
sudo ln --symbolic \ sudo ln --symbolic \
"$(relative_path "/usr/local/bin" "${APPS_DIR}/current/${bin}")" \ "$(relative_path "/usr/local/bin" "${APPS_DIR}/current/${bin}")" \
"${bin}" "${bin}"
fi fi
done done

@ -1,16 +1,16 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -euo pipefail
# shellcheck disable=SC1090 # shellcheck disable=SC1091
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
APP=minikube APP=minikube
VERSION=${VERSION:-1.25.2} VERSION=${VERSION:-1.30.1}
DEST=${XDG_DATA_HOME}/apps/releases/${APP} DEST=${XDG_DATA_HOME}/apps/releases/${APP}
URL=https://github.com/kubernetes/minikube/releases/download/v${VERSION}/minikube-$(get_os)-$(get_arch).tar.gz URL=https://github.com/kubernetes/minikube/releases/download/v${VERSION}/minikube-$(get_os)-$(get_arch).tar.gz
extract_tarball "${URL}" "${DEST}/${VERSION}" "--strip-components 1" extract_tarball "${URL}" "${DEST}/${VERSION}" "--strip-components 1"
set_current_link "${DEST}" "${VERSION}" set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" minikube-$(get_os)-$(get_arch) set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "minikube-$(get_os)-$(get_arch)"
set_link "${XDG_BIN_HOME}/docker-machine-driver-kvm2" "${DEST}" docker-machine-driver-kvm2 set_link "${XDG_BIN_HOME}/docker-machine-driver-kvm2" "${DEST}" docker-machine-driver-kvm2

@ -1,12 +1,12 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -euo pipefail
# shellcheck disable=SC1090 # shellcheck disable=SC1091
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
APP=minikube APP=minikube
VERSION=${VERSION:-v1.25.2} VERSION=${VERSION:-1.30.1}
APPS_DIR=/usr/local/apps/${APP} APPS_DIR=/usr/local/apps/${APP}
URL=https://github.com/kubernetes/minikube/releases/download/${VERSION}/minikube-$(get_os)-$(get_arch).tar.gz URL=https://github.com/kubernetes/minikube/releases/download/${VERSION}/minikube-$(get_os)-$(get_arch).tar.gz
@ -16,13 +16,13 @@ set_current_link "${APPS_DIR}" "${VERSION}" sudo
cd /usr/local/bin cd /usr/local/bin
if [[ ! -L minikube ]]; then if [[ ! -L minikube ]]; then
sudo ln --symbolic \ sudo ln --symbolic \
"$(relative_path "/usr/local/bin" "${APPS_DIR}/current/minikube-linux-amd64")" \ "$(relative_path "/usr/local/bin" "${APPS_DIR}/current/minikube-linux-amd64")" \
minikube minikube
fi fi
if [[ ! -L docker-machine-driver-kvm2 ]]; then if [[ ! -L docker-machine-driver-kvm2 ]]; then
sudo ln --symbolic \ sudo ln --symbolic \
"$(relative_path "/usr/local/bin" "${APPS_DIR}/current/docker-machine-driver-kvm2")" \ "$(relative_path "/usr/local/bin" "${APPS_DIR}/current/docker-machine-driver-kvm2")" \
docker-machine-driver-kvm2 docker-machine-driver-kvm2
fi fi

@ -1,13 +1,12 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -euo pipefail
set -x
# shellcheck disable=SC1090 # shellcheck disable=SC1091
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
APP=node_exporter APP=node_exporter
VERSION=${VERSION:-1.1.2} VERSION=${VERSION:-1.5.0}
APPS_DIR=/usr/local/apps/${APP} APPS_DIR=/usr/local/apps/${APP}
URL=https://github.com/prometheus/node_exporter/releases/download/v${VERSION}/node_exporter-${VERSION}.$(get_os)-$(get_arch).tar.gz URL=https://github.com/prometheus/node_exporter/releases/download/v${VERSION}/node_exporter-${VERSION}.$(get_os)-$(get_arch).tar.gz
@ -17,9 +16,9 @@ set_current_link "${APPS_DIR}" "${VERSION}" sudo
apps=$(find ${APPS_DIR}/current/ -maxdepth 1 -executable -type f -exec basename {} \;) apps=$(find ${APPS_DIR}/current/ -maxdepth 1 -executable -type f -exec basename {} \;)
cd /usr/local/bin cd /usr/local/bin
for bin in $apps; do for bin in $apps; do
if [[ ! -s $bin ]]; then if [[ ! -s $bin ]]; then
sudo ln --symbolic \ sudo ln --symbolic \
"$(relative_path "/usr/local/bin" "${APPS_DIR}/current/${bin}")" \ "$(relative_path "/usr/local/bin" "${APPS_DIR}/current/${bin}")" \
"${bin}" "${bin}"
fi fi
done done

@ -1,20 +1,32 @@
#!/usr/bin/env bash #!/usr/bin/env bash
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" set -euo pipefail
function get_os () ( # shellcheck disable=SC1091
case $(uname -s) in source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
Linux*) echo lnx;;
Darwin*) echo mac;;
*) >&2 echo "unsupported os: $(uname -s)"; exit 1;;
esac
)
APP=procs APP=procs
VERSION=${VERSION:-0.12.0} VERSION=${VERSION:-0.14.0}
DEST=${XDG_DATA_HOME}/apps/releases/${APP} DEST=${XDG_DATA_HOME}/apps/releases/${APP}
URL=https://github.com/dalance/procs/releases/download/v${VERSION}/procs-v${VERSION}-$(uname -m)-$(get_os).zip
extract_zip "${URL}" "${DEST}/${VERSION}" main() (
set_current_link "${DEST}" "${VERSION}" set -x
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}" URL=https://github.com/dalance/procs/releases/download/v${VERSION}/procs-v${VERSION}-$(uname -m)-$(get_os).zip
extract_zip "${URL}" "${DEST}/${VERSION}"
set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}"
)
get_os() (
case $(uname -s) in
Linux*) echo linux ;;
Darwin*) echo mac ;;
*)
echo >&2 "unsupported os: $(uname -s)"
exit 1
;;
esac
)
main "${@}"

@ -1,13 +1,12 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -euo pipefail
set -x
# shellcheck disable=SC1090 # shellcheck disable=SC1091
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
APP=prometheus APP=prometheus
VERSION=${VERSION:-2.26.0} VERSION=${VERSION:-2.44.0}
APPS_DIR=/usr/local/apps/${APP} APPS_DIR=/usr/local/apps/${APP}
URL=https://github.com/prometheus/prometheus/releases/download/v${VERSION}/prometheus-${VERSION}.$(get_os)-$(get_arch).tar.gz URL=https://github.com/prometheus/prometheus/releases/download/v${VERSION}/prometheus-${VERSION}.$(get_os)-$(get_arch).tar.gz
@ -17,9 +16,9 @@ set_current_link "${APPS_DIR}" "${VERSION}" sudo
apps=$(find ${APPS_DIR}/current/ -maxdepth 1 -executable -type f -exec basename {} \;) apps=$(find ${APPS_DIR}/current/ -maxdepth 1 -executable -type f -exec basename {} \;)
cd /usr/local/bin cd /usr/local/bin
for bin in $apps; do for bin in $apps; do
if [[ ! -s $bin ]]; then if [[ ! -s $bin ]]; then
sudo ln --symbolic \ sudo ln --symbolic \
"$(relative_path "/usr/local/bin" "${APPS_DIR}/current/${bin}")" \ "$(relative_path "/usr/local/bin" "${APPS_DIR}/current/${bin}")" \
"${bin}" "${bin}"
fi fi
done done

@ -1,59 +1,66 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -euo pipefail
# shellcheck disable=SC1090 # shellcheck disable=SC1091
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
get_os () ( VERSION=${VERSION:-23.1}
case $(uname -s) in APP=protoc
Linux*) echo linux;; APPS_DIR=${XDG_DATA_HOME}/apps/releases/${APP}
Darwin*) echo osx;; VER_DIR=${APPS_DIR}/${VERSION}
*) >&2 echo "unsupported os"; return;
esac main() (
ZIP=protoc-${VERSION}-$(get_os)-$(get_arch).zip
TMP_DIR=$(mktemp -d)
DEST_FILE=$TMP_DIR/$ZIP
URL=https://github.com/protocolbuffers/protobuf/releases/download/v${VERSION}/${ZIP}
if [[ ! -d ${VER_DIR} ]]; then
curl --output "${DEST_FILE}" --location "${URL}"
mkdir -p "${VER_DIR}"
unzip -o "${DEST_FILE}" -d "${VER_DIR}"
find "${VER_DIR}" -type f -exec chmod 644 {} \;
find "${VER_DIR}" -type d -exec chmod 755 {} \;
find "${VER_DIR}/bin" -type f -exec chmod 755 {} \;
fi
rm -rfv "$TMP_DIR"
set_current_link "${APPS_DIR}" "${VERSION}"
apps=$(find "${APPS_DIR}/current/bin" -maxdepth 1 -type f -exec basename {} \;)
pushd "${XDG_BIN_HOME}"
for bin in $apps; do
if [[ ! -s $bin ]]; then
ln -s \
"$(relative_path "${XDG_BIN_HOME}" "${APPS_DIR}/current/bin/${bin}")" \
"${bin}"
fi
done
popd
pushd "${XDG_INCLUDE_HOME}"
if [[ ! -s google ]]; then
ln -s \
"$(relative_path "${XDG_INCLUDE_HOME}" "${APPS_DIR}/current/include/google")" \
google
fi
popd
) )
get_arch () ( get_os() (
uname -m case $(uname -s) in
Linux*) echo linux ;;
Darwin*) echo osx ;;
*)
echo >&2 "unsupported os"
return
;;
esac
) )
VERSION=${VERSION:-22.3} get_arch() (
APP=protoc uname -m
APPS_DIR=${XDG_DATA_HOME}/apps/releases/${APP} )
VER_DIR=${APPS_DIR}/${VERSION}
ZIP=protoc-${VERSION}-$(get_os)-$(get_arch).zip main "${@}"
TMP_DIR=$(mktemp -d)
DEST_FILE=$TMP_DIR/$ZIP
URL=https://github.com/protocolbuffers/protobuf/releases/download/v${VERSION}/${ZIP}
if [[ ! -d "${VER_DIR}" ]]; then
curl --output "${DEST_FILE}" --location "${URL}"
mkdir -p "${VER_DIR}"
unzip -o "${DEST_FILE}" -d "${VER_DIR}"
find "${VER_DIR}" -type f -exec chmod 644 {} \;
find "${VER_DIR}" -type d -exec chmod 755 {} \;
find "${VER_DIR}/bin" -type f -exec chmod 755 {} \;
fi
rm -rfv "$TMP_DIR"
set_current_link "${APPS_DIR}" "${VERSION}"
apps=$(find "${APPS_DIR}/current/bin" -maxdepth 1 -type f -exec basename {} \;)
pushd "${XDG_BIN_HOME}"
for bin in $apps; do
if [[ ! -s $bin ]]; then
ln -s \
"$(relative_path "${XDG_BIN_HOME}" "${APPS_DIR}/current/bin/${bin}")" \
"${bin}"
fi
done
popd
pushd "${XDG_INCLUDE_HOME}"
if [[ ! -s google ]]; then
ln -s \
"$(relative_path "${XDG_INCLUDE_HOME}" "${APPS_DIR}/current/include/google")" \
google
fi
popd

@ -1,12 +1,11 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -x set -euo pipefail
set -e
# shellcheck disable=SC1090 # shellcheck disable=SC1091
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
PROTOC_VERSION=${VERSION:-20.3} PROTOC_VERSION=${VERSION:-23.1}
PROTOC_ZIP=protoc-$PROTOC_VERSION-linux-x86_64.zip PROTOC_ZIP=protoc-$PROTOC_VERSION-linux-x86_64.zip
TMP_DIR=$(mktemp --directory) TMP_DIR=$(mktemp --directory)
DEST_FILE=$TMP_DIR/$PROTOC_ZIP DEST_FILE=$TMP_DIR/$PROTOC_ZIP
@ -19,3 +18,5 @@ sudo unzip -o "$DEST_FILE" -d /usr/local 'include/*'
sudo find /usr/local/include/google -type f -exec chmod 644 {} \; sudo find /usr/local/include/google -type f -exec chmod 644 {} \;
sudo find /usr/local/include/google -type d -exec chmod 755 {} \; sudo find /usr/local/include/google -type d -exec chmod 755 {} \;
rm -rfv "$TMP_DIR" rm -rfv "$TMP_DIR"
main "${@}"

@ -2,33 +2,45 @@
set -euo pipefail set -euo pipefail
# shellcheck disable=SC1091
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
function get_os () (
case $(uname -s) in
Linux*) echo linux;;
Darwin*) echo darwin;;
*) >&2 echo "unsupported os: $(uname -s)"; exit 1;;
esac
)
function get_arch () (
case $(uname -m) in
x86_64) echo x64;;
arm64) echo arm64;;
aarch64) echo arm64;;
*) >&2 echo "unsupported arch: $(uname -m)"; exit 1;;
esac
)
APP=pulumi APP=pulumi
VERSION=${VERSION:-3.53.1} VERSION=${VERSION:-3.53.1}
DEST=${XDG_DATA_HOME}/apps/releases/${APP} DEST=${XDG_DATA_HOME}/apps/releases/${APP}
URL=https://get.pulumi.com/releases/sdk/pulumi-v${VERSION}-$(get_os)-$(get_arch).tar.gz
extract_tarball "${URL}" "${DEST}/${VERSION}" "--strip-components 1" main() (
set_current_link "${DEST}" "${VERSION}" URL=https://get.pulumi.com/releases/sdk/pulumi-v${VERSION}-$(get_os)-$(get_arch).tar.gz
extract_tarball "${URL}" "${DEST}/${VERSION}" "--strip-components 1"
set_current_link "${DEST}" "${VERSION}"
for PULUMI_APP in $(find "${DEST}/${VERSION}" -type f -exec basename "{}" \; | sort); do
set_link "${XDG_BIN_HOME}/${PULUMI_APP}" "${DEST}" "${PULUMI_APP}"
done
)
get_os() (
case $(uname -s) in
Linux*) echo linux ;;
Darwin*) echo darwin ;;
*)
echo >&2 "unsupported os: $(uname -s)"
exit 1
;;
esac
)
get_arch() (
case $(uname -m) in
x86_64) echo x64 ;;
arm64) echo arm64 ;;
aarch64) echo arm64 ;;
*)
echo >&2 "unsupported arch: $(uname -m)"
exit 1
;;
esac
)
for PULUMI_APP in $(find "${DEST}/${VERSION}" -type f -exec basename "{}" \; | sort); do main "${@}"
set_link "${XDG_BIN_HOME}/${PULUMI_APP}" "${DEST}" "${PULUMI_APP}"
done

@ -1,10 +1,12 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# shellcheck disable=SC1090 set -euo pipefail
# shellcheck disable=SC1091
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
APP=shellcheck APP=shellcheck
VERSION=${VERSION:-0.7.2} VERSION=${VERSION:-0.9.0}
DEST="${XDG_DATA_HOME}/apps/releases/${APP}" DEST="${XDG_DATA_HOME}/apps/releases/${APP}"
URL=https://github.com/koalaman/shellcheck/releases/download/v${VERSION}/shellcheck-v${VERSION}.$(get_os).$(uname -m).tar.xz URL=https://github.com/koalaman/shellcheck/releases/download/v${VERSION}/shellcheck-v${VERSION}.$(get_os).$(uname -m).tar.xz

@ -1,22 +1,32 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# shellcheck disable=SC1090 set -euo pipefail
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
get_arch () { # shellcheck disable=SC1091
case $(uname -m) in source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
x86_64*) echo amd64;;
*) >&2 echo "unsupported architecture: $(uname -m)"; exit 1;;
esac
}
APP=shfmt APP=shfmt
VERSION=${VERSION:-3.3.1} VERSION=${VERSION:-3.6.0}
DEST="${XDG_DATA_HOME}/apps/releases/${APP}" DEST=${XDG_DATA_HOME}/apps/releases/${APP}
URL=https://github.com/mvdan/sh/releases/download/v${VERSION}/shfmt_v${VERSION}_$(get_os)_$(get_arch)
main() (
URL=https://github.com/mvdan/sh/releases/download/v${VERSION}/shfmt_v${VERSION}_$(get_os)_$(get_arch)
mkdir_if_missing "${DEST}/${VERSION}"
curl --silent --location --output "${DEST}/${VERSION}/${APP}" "${URL}"
chmod 755 "${DEST}/${VERSION}/${APP}"
set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}"
)
get_arch() (
case $(uname -m) in
x86_64*) echo amd64 ;;
*)
echo >&2 "unsupported architecture: $(uname -m)"
exit 1
;;
esac
)
mkdir_if_missing "${DEST}/${VERSION}" main "${@}"
curl --silent --location --output "${DEST}/${VERSION}/${APP}" "${URL}"
chmod 755 "${DEST}/${VERSION}/${APP}"
set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}"

@ -1,8 +1,8 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -ueo pipefail set -euo pipefail
# shellcheck disable=SC1090 # shellcheck disable=SC1091
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
APP=sqlc APP=sqlc

@ -1,12 +1,28 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail
# shellcheck disable=SC1091
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
APP=tile38 APP=tile38
VERSION=${VERSION:-1.30.2} VERSION=${VERSION:-1.31.0}
DEST=${XDG_DATA_HOME}/apps/releases/${APP} DEST=${XDG_DATA_HOME}/apps/releases/${APP}
install_zip () ( main() (
case $(get_os) in
darwin) install_zip ;;
freebsd) install_zip ;;
windows) install_zip ;;
linux) install_targz ;;
*)
echo >&2 "unsupported os $(uname -s)"
exit 1
;;
esac
)
install_zip() (
URL=https://github.com/tidwall/tile38/releases/download/${VERSION}/tile38-${VERSION}-$(get_os)-$(get_arch).zip URL=https://github.com/tidwall/tile38/releases/download/${VERSION}/tile38-${VERSION}-$(get_os)-$(get_arch).zip
extract_zip "${URL}" "${DEST}/${VERSION}" extract_zip "${URL}" "${DEST}/${VERSION}"
set_current_link "${DEST}" "${VERSION}" set_current_link "${DEST}" "${VERSION}"
@ -14,25 +30,19 @@ install_zip () (
pushd "${DEST_DIR}" || exit 1 pushd "${DEST_DIR}" || exit 1
mv -v ./* ../ mv -v ./* ../
popd || exit 1 popd || exit 1
rmdir "${DEST_DIR}" rmdir "${DEST_DIR}"
set_link "${XDG_BIN_HOME}/tile38-benchmark" "${DEST}" tile38-benchmark set_link "${XDG_BIN_HOME}/tile38-benchmark" "${DEST}" tile38-benchmark
set_link "${XDG_BIN_HOME}/tile38-cli" "${DEST}" tile38-cli set_link "${XDG_BIN_HOME}/tile38-cli" "${DEST}" tile38-cli
set_link "${XDG_BIN_HOME}/tile38-server" "${DEST}" tile38-server set_link "${XDG_BIN_HOME}/tile38-server" "${DEST}" tile38-server
) )
install_targz () ( install_targz() (
URL=https://github.com/tidwall/tile38/releases/download/${VERSION}/tile38-${VERSION}-$(get_os)-$(get_arch).tar.gz URL=https://github.com/tidwall/tile38/releases/download/${VERSION}/tile38-${VERSION}-$(get_os)-$(get_arch).tar.gz
extract_tarball "${URL}" "${DEST}/${VERSION}" "--strip-component 1" extract_tarball "${URL}" "${DEST}/${VERSION}" "--strip-component 1"
set_current_link "${DEST}" "${VERSION}" set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/tile38-benchmark" "${DEST}" tile38-benchmark set_link "${XDG_BIN_HOME}/tile38-benchmark" "${DEST}" tile38-benchmark
set_link "${XDG_BIN_HOME}/tile38-cli" "${DEST}" tile38-cli set_link "${XDG_BIN_HOME}/tile38-cli" "${DEST}" tile38-cli
set_link "${XDG_BIN_HOME}/tile38-server" "${DEST}" tile38-server set_link "${XDG_BIN_HOME}/tile38-server" "${DEST}" tile38-server
) )
case $(get_os) in main "${@}"
darwin) install_zip;;
freebsd) install_zip;;
windows) install_zip;;
linux) install_targz;;
*) >&2 echo "unsupported os $(uname -s)"; exit 1;;
esac

@ -1,8 +1,8 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -euo pipefail
# shellcheck disable=SC1090 # shellcheck disable=SC1091
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh" source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
APP=trubka APP=trubka

@ -1,27 +1,37 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# shellcheck disable=SC1090 set -euo pipefail
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
get_arch () ( # shellcheck disable=SC1091
case $(uname -m) in source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
x86_64*) echo i686;;
amd64*) echo i686;;
i386*) echo i686;;
i686*) echo i686;;
arm) echo arm;;
aarch64*) echo aarch64;;
*) >&2 echo "unsupported architecture: $(uname -m)"; exit 1;;
esac
)
APP=ttyd APP=ttyd
VERSION=${VERSION:-1.7.2} VERSION=${VERSION:-1.7.2}
DEST=${XDG_DATA_HOME}/apps/releases/${APP} DEST=${XDG_DATA_HOME}/apps/releases/${APP}
URL=https://github.com/tsl0922/ttyd/releases/download/${VERSION}/ttyd.$(get_arch)
mkdir_if_missing "${DEST}/${VERSION}" main() (
curl --silent --location --output "${DEST}/${VERSION}/${APP}" "${URL}" URL=https://github.com/tsl0922/ttyd/releases/download/${VERSION}/ttyd.$(get_arch)
chmod 755 "${DEST}/${VERSION}/${APP}"
set_current_link "${DEST}" "${VERSION}" mkdir_if_missing "${DEST}/${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}" curl --silent --location --output "${DEST}/${VERSION}/${APP}" "${URL}"
chmod 755 "${DEST}/${VERSION}/${APP}"
set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}"
)
get_arch() (
case $(uname -m) in
x86_64*) echo i686 ;;
amd64*) echo i686 ;;
i386*) echo i686 ;;
i686*) echo i686 ;;
arm) echo arm ;;
aarch64*) echo aarch64 ;;
*)
echo >&2 "unsupported architecture: $(uname -m)"
exit 1
;;
esac
)
main "${@}"

@ -1,20 +1,30 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# shellcheck disable=SC1090 set -euo pipefail
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
get_arch () { # shellcheck disable=SC1091
case $(uname -m) in source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"
x86_64*) echo amd64;;
*) >&2 echo "unsupported architecture: $(uname -m)"; exit 1;;
esac
}
APP=vegeta APP=vegeta
VERSION=${VERSION:-12.8.4} VERSION=${VERSION:-12.8.4}
DEST="${XDG_DATA_HOME}/apps/releases/${APP}" DEST=${XDG_DATA_HOME}/apps/releases/${APP}
URL=https://github.com/tsenart/vegeta/releases/download/v${VERSION}/vegeta_${VERSION}_$(get_os)_$(get_arch).tar.gz
main() (
URL=https://github.com/tsenart/vegeta/releases/download/v${VERSION}/vegeta_${VERSION}_$(get_os)_$(get_arch).tar.gz
extract_tarball "${URL}" "${DEST}/${VERSION}"
set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}"
)
get_arch() (
case $(uname -m) in
x86_64*) echo amd64 ;;
*)
echo >&2 "unsupported architecture: $(uname -m)"
exit 1
;;
esac
)
extract_tarball "${URL}" "${DEST}/${VERSION}" main "${@}"
set_current_link "${DEST}" "${VERSION}"
set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}"

Loading…
Cancel
Save