diff --git a/src/main/bash/install.sh b/src/main/bash/install.sh index c2407b1f..b1290fee 100755 --- a/src/main/bash/install.sh +++ b/src/main/bash/install.sh @@ -33,6 +33,7 @@ sdkman_zip_file="${sdkman_tmp_folder}/res-${SDKMAN_VERSION}.zip" sdkman_ext_folder="${SDKMAN_DIR}/ext" sdkman_etc_folder="${SDKMAN_DIR}/etc" sdkman_var_folder="${SDKMAN_DIR}/var" +sdkman_candidates_folder="${SDKMAN_DIR}/candidates" sdkman_config_file="${sdkman_etc_folder}/config" sdkman_bash_profile="${HOME}/.bash_profile" sdkman_profile="${HOME}/.profile" @@ -196,6 +197,7 @@ mkdir -p "${sdkman_stage_folder}" mkdir -p "${sdkman_ext_folder}" mkdir -p "${sdkman_etc_folder}" mkdir -p "${sdkman_var_folder}" +mkdir -p "${sdkman_candidates_folder}" echo "Getting available candidates..." SDKMAN_CANDIDATES_CSV=$(curl -s "${SDKMAN_SERVICE}/candidates") diff --git a/src/main/bash/selfupdate.sh b/src/main/bash/selfupdate.sh index b2e19ab3..f1361dba 100755 --- a/src/main/bash/selfupdate.sh +++ b/src/main/bash/selfupdate.sh @@ -170,6 +170,7 @@ rm -rf "${sdkman_src_folder}" sdkman_echo_debug "Refresh directory structure..." mkdir -p "${SDKMAN_DIR}/bin" +mkdir -p "${SDKMAN_DIR}/candidates" mkdir -p "${SDKMAN_DIR}/ext" mkdir -p "${SDKMAN_DIR}/etc" mkdir -p "${SDKMAN_DIR}/src" @@ -189,8 +190,13 @@ IFS="$OLD_IFS" for candidate in "${SDKMAN_CANDIDATES[@]}"; do if [[ -n "$candidate" ]]; then - sdkman_echo_debug "Attempt removal of ${candidate} dir: ${SDKMAN_DIR}/${candidate}" - rmdir --ignore-fail-on-non-empty "${SDKMAN_DIR}/${candidate}" + if [[ -z "$(ls -A /path/to/directory)" ]]; then + sdkman_echo_debug "Attempt removal of ${candidate} dir: ${SDKMAN_DIR}/${candidate}" + rmdir --ignore-fail-on-non-empty "${SDKMAN_DIR}/${candidate}" + else + mv "${SDKMAN_DIR}/${candidate}" "${SDKMAN_DIR}/candidates/${candidate}" + ln -s "${SDKMAN_DIR}/candidates/${candidate}" "${SDKMAN_DIR}/${candidate}" + fi fi done