dotfiles/tools.sh

66 lines
1.6 KiB
Bash
Executable file

#!/usr/bin/env bash
BIN_DIR=$HOME/bin
mkdir -p $BIN_DIR
EGET_BIN=$BIN_DIR
post_download_install() {
tool=$1
temp_file=$(mktemp -p . ${tool}.XXX.sh)
key=$tool yq e 'explode(.) | .[env(key)].post-download' $YAMLDOC > $temp_file
. $temp_file
rm $temp_file
}
if ! $(is-executable eget); then
echo "I don't see eget on your path..."
read -p "Do you want to download it to ${BIN_DIR}? " -n 1 -r
echo # (optional) move to a new line
if [[ ! $REPLY =~ ^[Yy]$ ]]
then
exit 1
else
curl https://zyedidia.github.io/eget.sh | sh
mv eget $BIN_DIR/eget
fi
fi
echo "downloading binaries from github to $EGET_BIN"
if ! $(is-executable yq); then
eget mikefarah/yq --asset yq_linux_amd64
fi
YAMLDOC="info/tools.yml"
alias eget="eget --system linux/amd64"
readarray tools < <(yq e 'keys | .[]' $YAMLDOC)
for tool in "${tools[@]:1}"
do
echo -n $tool
user=$(key=$tool yq e 'explode(.) | .[env(key)].user' $YAMLDOC)
asset=$(key=$tool yq e 'explode(.) | .[env(key)].asset // ""' $YAMLDOC)
file=$(key=$tool yq e 'explode(.) | .[env(key)].file // ""' $YAMLDOC)
to=$(key=$tool yq e 'explode(.) | .[env(key)].to // ""' $YAMLDOC)
download_only=$(key=$tool yq e 'explode(.) | .[env(key)].download-only // ""' $YAMLDOC)
eget $user/$tool \
${asset:+--asset $asset} \
${file:+--file $file} \
${to:+--to $to}\
${download_only:+--download-only} \
-q
if [[ $download_only ]]; then
echo -n '-->'
echo -n 'running post-download script'
post_download_install $tool
fi
echo
done