mirror of
https://github.com/sdkman/sdkman-cli.git
synced 2026-04-18 22:18:44 -04:00
133 lines
3.0 KiB
Bash
Executable File
133 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
GVM_VERSION="v0.1"
|
|
echo "Groovy enVironment Manager $GVM_VERSION"
|
|
|
|
if [ ! $(which curl) ]; then
|
|
echo "Please install curl through your package manager before using this tool."
|
|
exit 0
|
|
fi
|
|
|
|
if [ ! "$GVM_SERVICE" ]; then
|
|
GVM_SERVICE="http://localhost:8080/gvm-service"
|
|
fi
|
|
|
|
if [ ! "$GVM_DIR" ]; then
|
|
GVM_DIR="$HOME/.gvm"
|
|
fi
|
|
|
|
if [ ! -d "$GVM_DIR" ]; then
|
|
mkdir "$GVM_DIR"
|
|
fi
|
|
|
|
CANDIDATES=$(curl -s "$GVM_SERVICE/candidate/all")
|
|
|
|
if [ ! "$CANDIDATES" ]; then
|
|
echo "------------------------------------------"
|
|
echo " This is serious! Service is down! "
|
|
echo " Please notify: @freshgroovy immediately! "
|
|
echo "------------------------------------------"
|
|
exit 0
|
|
fi
|
|
|
|
function help {
|
|
echo "Usage: gvm <command> <candidate> [version]"
|
|
echo ""
|
|
echo " command : install, uninstall, list, use or help"
|
|
echo " candidate : $CANDIDATES"
|
|
echo " version : optional, defaults to latest stable if not provided"
|
|
echo ""
|
|
echo "eg: gvm install grails 2.1.0"
|
|
}
|
|
|
|
if [ "$1" == "help" -o -z "$1" -o -z "$2" ]; then
|
|
help
|
|
exit 0
|
|
fi
|
|
|
|
if [ "$1" != "install" -a "$1" != "use" -a "$1" != "uninstall" -a "$1" != "list" -a "$1" != "help" ]; then
|
|
echo "Invalid command: $1"
|
|
help
|
|
exit 0
|
|
fi
|
|
|
|
CANDIDATE_VALID=$(curl -s "$GVM_SERVICE/candidate/all/$2")
|
|
if [ "$CANDIDATE_VALID" != 'true' ]; then
|
|
echo "Invalid candidate: $2"
|
|
help
|
|
exit 0
|
|
fi
|
|
|
|
function download {
|
|
CANDIDATE="$1"
|
|
VERSION="$2"
|
|
echo ""
|
|
DOWNLOAD_URL=$(curl -s "$GVM_SERVICE/$CANDIDATE/download/$VERSION")
|
|
curl -L "$DOWNLOAD_URL" >> "/tmp/$CANDIDATE-$VERSION.zip"
|
|
echo ""
|
|
}
|
|
|
|
function gvm-install {
|
|
CANDIDATE="$1"
|
|
if [ -z "$2" ]; then
|
|
VERSION=$(curl -s "$GVM_SERVICE/$CANDIDATE/version/current")
|
|
else
|
|
VERSION=$(curl -s "$GVM_SERVICE/$CANDIDATE/version/$2")
|
|
fi
|
|
|
|
if [ "$VERSION" == "invalid" ]; then
|
|
echo ""
|
|
echo "Stop! $2 is not a valid grails version."
|
|
exit 0
|
|
fi
|
|
|
|
if [ -d "$GVM_DIR/$CANDIDATE/$VERSION" ]; then
|
|
echo ""
|
|
echo "Stop! $CANDIDATE $VERSION is already installed."
|
|
exit 0
|
|
fi
|
|
|
|
echo "Downloading: $CANDIDATE $VERSION"
|
|
download "$CANDIDATE" "$VERSION"
|
|
echo "Installing: $CANDIDATE $VERSION"
|
|
mkdir -p "$GVM_DIR/$CANDIDATE"
|
|
unzip -q "/tmp/$CANDIDATE-$VERSION.zip" -d "/tmp/"
|
|
mv "/tmp/$CANDIDATE-$VERSION" "$GVM_DIR/$CANDIDATE/$VERSION"
|
|
rm "/tmp/$CANDIDATE-$VERSION.zip"
|
|
echo "Done installing!"
|
|
echo ""
|
|
echo "Start using $CANDIDATE $VERSION by issuing the following command:"
|
|
echo " gvm use $CANDIDATE $VERSION"
|
|
}
|
|
|
|
function gvm-use {
|
|
CANDIDATE="$1"
|
|
if [ -z "$2" ]; then
|
|
VERSION=$(curl -s "$GVM_SERVICE/$CANDIDATE/version")
|
|
else
|
|
VERSION=$(curl -s "$GVM_SERVICE/$CANDIDATE/version/$2")
|
|
fi
|
|
|
|
if [ "$VERSION" == "invalid" ]; then
|
|
echo ""
|
|
echo "Stop! $2 is not a valid $CANDIDATE version."
|
|
exit 0
|
|
fi
|
|
|
|
|
|
if [ ! -d "$GVM_DIR/$CANDIDATE/$VERSION" ]; then
|
|
echo ""
|
|
echo "Stop! $CANDIDATE $VERSION is not installed."
|
|
echo ""
|
|
exit 0
|
|
fi
|
|
|
|
if [ -L "$GVM_DIR/$CANDIDATE/current" ]; then
|
|
unlink "$GVM_DIR/$CANDIDATE/current"
|
|
fi
|
|
ln -s "$GVM_DIR/$CANDIDATE/$VERSION" "$GVM_DIR/$CANDIDATE/current"
|
|
echo ""
|
|
echo Using "$CANDIDATE" version "$VERSION"
|
|
}
|
|
|
|
gvm-"$1" "$2" "$3"
|