diff --git a/README.md b/README.md index 9ef83fb..45b93ec 100644 --- a/README.md +++ b/README.md @@ -26,20 +26,16 @@ and switch versions like this: asdf global java oracle-10.0.2 ``` -If you want or need `JAVA_HOME` set you can add this to your shell initialization (in `.bashrc`, for example): +If you need to disable colors, try: ```bash -function asdf_and_update_env() { - if \asdf "$@"; then - if [[ "$(\asdf current java 2>&1)" =~ (^([-_.a-zA-Z0-9]+)[[:space:]]*\(set by.*$) ]]; then - export JAVA_HOME=$(\asdf where java ${BASH_REMATCH[2]}) - else - export JAVA_HOME='' - fi - fi -} +export ASDF_JAVA_PLAIN=truthy +``` -alias asdf='asdf_and_update_env' +If you want or need `JAVA_HOME` set you can load our `asdf` wrapper to your shell initialization (in `.bashrc`, for example): + +```bash +. ~/.asdf/plugins/java/bin/asdf-java-wrapper ``` If you need Gradle or Maven, you can use asdf plugins for those, too. diff --git a/bin/asdf-java-wrapper b/bin/asdf-java-wrapper new file mode 100755 index 0000000..e8c5bfb --- /dev/null +++ b/bin/asdf-java-wrapper @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +# Credit: github.com/trustin +asdf_java_wrapper() { + if \asdf "$@"; then + if [[ "$(\asdf current java 2>&1)" =~ (^([-_.a-zA-Z0-9]+)[[:space:]]*\(set by.*$) ]]; then + export JAVA_HOME=$(\asdf where java ${BASH_REMATCH[2]}) + else + export JAVA_HOME='' + fi + fi +} + +alias asdf='asdf_java_wrapper' diff --git a/bin/install b/bin/install index 35d1631..802fa85 100755 --- a/bin/install +++ b/bin/install @@ -3,7 +3,33 @@ # this is global for error reporting ASDF_JAVA_ERROR="" -# Download the java source from Oracle, copy files and cleanup. +log() { + # set colors unless ASDF_JAVA_PLAIN is set + [[ -z $ASDF_JAVA_PLAIN ]] && tput setab $1 && tput setaf 0 + + echo -n "░asdf java $2░" + + # set colors unless ASDF_JAVA_PLAIN is set + [[ -z $ASDF_JAVA_PLAIN ]] && tput sgr0 && tput setaf $1 + echo " ${@:3}" + + # unset colors + tput sgr0 +} + +log_info() { + log 2 ':)' "$@" +} + +log_warning() { + log 3 ':o' "$@" +} + +log_error() { + log 1 ':(' "$@" +} + +# Download the java source from Oracle or OpenJDK, copy files and cleanup. install_java() { local versionstr=$1 local destdir=$2 @@ -23,7 +49,6 @@ install_java() { # Get the "variant" piece of the Oracle url. get_variant() { local distro=$1 - echo $distro >> /tmp/distro case "$(uname -s)" in Linux) case "$(uname -m)" in @@ -59,13 +84,13 @@ get_current_variant() { local variant=$1 if [[ "$variant" == *"mac"* ]]; then - variant=$(echo $variant | sed -e 's/mac//') + variant=$(echo $variant | sed -e 's|mac||') fi if [[ "$variant" == *"tar"* ]]; then - echo $variant | sed -e 's/.tar/_bin.tar/' + echo $variant | sed -e 's|.tar|_bin.tar|' elif [[ "$variant" == *"dmg"* ]]; then - echo $variant | sed -e 's/.dmg/_bin.dmg/' + echo $variant | sed -e 's|.dmg|_bin.dmg|' fi } @@ -86,25 +111,25 @@ get_java() { local destdir=$4 local base=$(get_base_url $distro) - local oracle8_version=$(echo $version | sed -e 's/\./u/g') + local oracle8_version=$(echo $version | sed -e 's|\.|u|g') case $distro-$version in - oracle-11) url=$base$version+28/55eed80b163941c8885ad9298e6d786a/jdk-$version'_'$(get_current_variant $variant) ;; - oracle-10.0.2) url=$base$version+13/19aef61b38124481863b1413dce1855f/jdk-$version'_'$(get_current_variant $variant) ;; + oracle-11.0.1) url=$base$version+13/90cf5d8f270a4347a95050320eef3fb7/jdk-$version'_'$(get_current_variant $variant) ;; oracle-8.191) url=$base$oracle8_version-b12/2787e4a523244c269598db4e85c51e0c/jdk-$oracle8_version-$variant ;; - oracle-8.141) url=$base$oracle8_version-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-$oracle8_version-$variant ;; - oracle-8.131) url=$base$oracle8_version-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-$oracle8_version-$variant ;; - openjdk-10.0.2) url=$base'10'/$version/19aef61b38124481863b1413dce1855f/13/openjdk-$version'_'$variant ;; + oracle-8.141) url=$base$oracle8_version-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-$oracle8_version-$variant ;; + oracle-8.131) url=$base$oracle8_version-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-$oracle8_version-$variant ;; + openjdk-11) url=${base/\/GA\//\/ga\/}11/openjdk-11_$variant ;; + openjdk-10.0.2) url=$base'10'/$version/19aef61b38124481863b1413dce1855f/13/openjdk-$version'_'$variant ;; + *) ASDF_JAVA_ERROR="$version is not a supported version" ;; esac [[ -z "$ASDF_JAVA_ERROR" ]] || return - echo "---- ASDF JAVA MESSAGE ----" - echo "downloading: $url" + log_info downloading $url curl -fLC - \ - --progress-bar --silent \ + --progress-bar \ --retry 3 --retry-delay 3 \ -b oraclelicense=accept-securebackup-cookie \ -o $destdir/$variant $url @@ -117,8 +142,7 @@ unpack_java() { local variant=$1 local destdir=$2 - echo "---- ASDF JAVA MESSAGE ----" - echo "expanding java dist" + log_info expanding java dist case $variant in *.tar.gz) unpack_tar $variant $destdir ;; @@ -203,23 +227,21 @@ unmount_dmg() { [[ -z "$ASDF_JAVA_ERROR" ]] || \ ASDF_JAVA_ERROR="unmounting java dist" - echo "---- ASDF JAVA WARNING ----" - echo "The java dist is still mounted at $dir." - echo " Use `hdiutil unmount` to unmount it." - echo "----" + log_warning "The java dist is still mounted at $dir." + log_warning " Use hdiutil unmount to unmount it." fi } # # MAIN # -install_java $ASDF_INSTALL_VERSION $ASDF_INSTALL_PATH +install_java "$ASDF_INSTALL_VERSION" "$ASDF_INSTALL_PATH" -if ! [[ -z "$ASDF_JAVA_ERROR" ]]; then - rm -rf $ASDF_INSTALL_PATH - - echo "---- ASDF JAVA ERROR ----" - echo "asdf java failed while $ASDF_JAVA_ERROR" - echo "----" +if [[ -z "$ASDF_JAVA_ERROR" ]]; then + log_info "$ASDF_INSTALL_VERSION was installed successfully" + respond_to_failure +else + log_error "asdf java failed. $ASDF_JAVA_ERROR" fi + unset ASDF_JAVA_ERROR diff --git a/bin/list-all b/bin/list-all index f7b2014..b184a40 100755 --- a/bin/list-all +++ b/bin/list-all @@ -1,3 +1,10 @@ #!/bin/env bash -echo "oracle-8.131 oracle-8.141 oracle-8.181 oracle-10.0.2 openjdk-10.0.2" +echo $(echo " +oracle-8.131 +oracle-8.141 +oracle-8.191 +oracle-11.0.1 +openjdk-10.0.2 +openjdk-11 +")