2019-08-11 07:22:57 +00:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
|
|
set -euo pipefail
|
|
|
|
|
|
2020-09-25 16:37:38 +00:00
|
|
|
version=""
|
|
|
|
|
default_install_dir="/usr/local/bin"
|
|
|
|
|
install_dir=$default_install_dir
|
2020-12-23 18:30:30 +00:00
|
|
|
default_download_dir="/tmp"
|
|
|
|
|
download_dir=$default_download_dir
|
2020-09-25 16:37:38 +00:00
|
|
|
|
2019-08-11 07:22:57 +00:00
|
|
|
print_help() {
|
2020-09-25 16:37:38 +00:00
|
|
|
echo "Installs latest (or specific) version of babashka. Installation directory defaults to /usr/local/bin."
|
2019-08-11 07:22:57 +00:00
|
|
|
echo -e
|
|
|
|
|
echo "Usage:"
|
2020-12-23 18:30:30 +00:00
|
|
|
echo "install [--dir <dir>] [--download-dir <download-dir>] [--version <version>]"
|
|
|
|
|
echo -e
|
|
|
|
|
echo "Defaults:"
|
|
|
|
|
echo " * Installation directory: ${default_install_dir}"
|
|
|
|
|
echo " * Download directory: ${default_download_dir}"
|
|
|
|
|
echo " * Version: <Latest release on github>"
|
2019-08-11 07:22:57 +00:00
|
|
|
exit 1
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-25 16:37:38 +00:00
|
|
|
if [[ $# -eq 1 ]]; then
|
|
|
|
|
install_dir=${1:-}
|
2019-08-11 07:22:57 +00:00
|
|
|
fi
|
|
|
|
|
|
2020-09-25 16:37:38 +00:00
|
|
|
while [[ $# -gt 1 ]]
|
|
|
|
|
do
|
|
|
|
|
key="$1"
|
|
|
|
|
if [[ -z "${2:-}" ]]; then
|
|
|
|
|
print_help
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
case $key in
|
|
|
|
|
--dir)
|
|
|
|
|
install_dir="$2"
|
|
|
|
|
shift
|
|
|
|
|
shift
|
|
|
|
|
;;
|
2020-12-23 18:30:30 +00:00
|
|
|
--download-dir)
|
|
|
|
|
download_dir="$2"
|
|
|
|
|
shift
|
|
|
|
|
shift
|
|
|
|
|
;;
|
2020-09-25 16:37:38 +00:00
|
|
|
--version)
|
|
|
|
|
version="$2"
|
|
|
|
|
shift
|
|
|
|
|
shift
|
|
|
|
|
;;
|
|
|
|
|
*) # unknown option
|
|
|
|
|
print_help
|
|
|
|
|
shift
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
if [[ "$version" == "" ]]; then
|
2021-01-01 10:26:31 +00:00
|
|
|
version="$(curl -sL https://raw.githubusercontent.com/babashka/babashka/master/resources/BABASHKA_RELEASED_VERSION)"
|
2020-09-25 16:37:38 +00:00
|
|
|
fi
|
2019-08-11 07:22:57 +00:00
|
|
|
|
|
|
|
|
case "$(uname -s)" in
|
|
|
|
|
Linux*) platform=linux;;
|
|
|
|
|
Darwin*) platform=macos;;
|
|
|
|
|
esac
|
|
|
|
|
|
2021-01-01 10:26:31 +00:00
|
|
|
download_url="https://github.com/babashka/babashka/releases/download/v$version/babashka-$version-$platform-amd64.zip"
|
2019-08-11 07:22:57 +00:00
|
|
|
|
2020-12-23 18:30:30 +00:00
|
|
|
mkdir -p "$download_dir"
|
2019-08-11 07:22:57 +00:00
|
|
|
cd "$download_dir"
|
2020-12-23 18:30:30 +00:00
|
|
|
echo -e "Downloading $download_url to $download_dir"
|
|
|
|
|
rm -rf "babashka-$version-$platform-amd64.zip"
|
|
|
|
|
rm -rf "bb"
|
2021-01-01 10:26:31 +00:00
|
|
|
curl -o "babashka-$version-$platform-amd64.zip" -sL "https://github.com/babashka/babashka/releases/download/v$version/babashka-$version-$platform-amd64.zip"
|
2020-09-25 16:37:38 +00:00
|
|
|
unzip -qqo "babashka-$version-$platform-amd64.zip"
|
|
|
|
|
rm "babashka-$version-$platform-amd64.zip"
|
2019-08-11 07:22:57 +00:00
|
|
|
|
2020-12-23 18:30:30 +00:00
|
|
|
if [ "$download_dir" != "$install_dir" ]
|
|
|
|
|
then
|
|
|
|
|
mkdir -p "$install_dir"
|
|
|
|
|
cd "$install_dir"
|
|
|
|
|
if [ -f bb ]; then
|
|
|
|
|
echo "Moving $install_dir/bb to $install_dir/bb.old"
|
|
|
|
|
fi
|
|
|
|
|
mv -f "$download_dir/bb" "$PWD/bb"
|
2019-08-11 07:22:57 +00:00
|
|
|
fi
|
|
|
|
|
|
2020-12-23 18:55:34 +00:00
|
|
|
echo "Successfully installed bb in $install_dir"
|