sbt/scripts/cs-setup.sh

106 lines
2.6 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# coursier launcher setup script
# See https://github.com/coursier/ci-scripts
#
set -e
coursier_version="2.0.0-RC6-24"
for_graalvm="false"
dest="cs"
# Adapted from https://github.com/paulp/sbt-extras/blob/ea47026bd55439760f4c5e9b27b002fa64a8b82f/sbt#L427-L435 and around
die() {
echo "Aborting: $*"
exit 1
}
process_args() {
require_arg() {
local type="$1"
local opt="$2"
local arg="$3"
if [[ -z "$arg" ]] || [[ "${arg:0:1}" == "-" ]]; then
die "$opt requires <$type> argument"
fi
}
parsing_args="true"
while [[ $# -gt 0 && "$parsing_args" == "true" ]]; do
case "$1" in
--version) require_arg version "$1" "$2" && coursier_version="$2" && shift 2 ;;
--dest) require_arg path "$1" "$2" && dest="$2" && shift 2 ;;
--graalvm) for_graalvm="true" && shift ;;
*) die "Unexpected argument: '$1'" ;;
esac
done
}
process_args "$@"
do_chmod="1"
ext=""
setenv_bat="0"
# https://stackoverflow.com/questions/3466166/how-to-check-if-running-in-cygwin-mac-or-linux/17072017#17072017
if [ "$(expr substr $(uname -s) 1 5 2>/dev/null)" == "Linux" ]; then
cs_url="https://github.com/coursier/coursier/releases/download/v$coursier_version/cs-x86_64-pc-linux"
cache_base="$HOME/.cache/coursier/v1"
elif [ "$(uname)" == "Darwin" ]; then
cs_url="https://github.com/coursier/coursier/releases/download/v$coursier_version/cs-x86_64-apple-darwin"
cache_base="$HOME/Library/Caches/Coursier/v1"
else
# assuming Windows…
cs_url="https://github.com/coursier/coursier/releases/download/v$coursier_version/cs-x86_64-pc-win32.exe"
cache_base="$LOCALAPPDATA/Coursier/v1" # TODO Check that
ext=".exe"
do_chmod="0"
if [ "$for_graalvm" = "true" ]; then
choco install -y windows-sdk-7.1 vcbuildtools kb2519277
setenv_bat="1"
fi
fi
cache_dest="$cache_base/$(echo "$cs_url" | sed 's@://@/@')"
if [ -f "$cache_dest" ]; then
echo "Found $cache_dest in cache"
else
mkdir -p "$(dirname "$cache_dest")"
tmp_dest="$cache_dest.tmp-setup"
echo "Downloading $cs_url"
curl -Lo "$tmp_dest" "$cs_url"
mv "$tmp_dest" "$cache_dest"
fi
if [ "$setenv_bat" = "1" ]; then
cp "$cache_dest" ".$dest$ext"
"./.$dest$ext" --help
if [ "$do_chmod" = "1" ]; then
chmod +x ".$dest$ext"
fi
cat > "$dest.bat" << EOF
@call "C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\Bin\\SetEnv.Cmd"
%~dp0.$dest$ext %*
EOF
# that one is for bash
cat > "$dest" << EOF
#!/usr/bin/env bash
set -e
exec $(pwd)/$dest.bat "\$@"
EOF
chmod +x "$dest" || true
else
cp "$cache_dest" "$dest$ext"
if [ "$do_chmod" = "1" ]; then
chmod +x "$dest$ext"
fi
fi
export PATH=".:$PATH"
"$dest" --help