@@ -24,36 +24,74 @@ function __sdk_use() {
2424 __sdkman_check_version_present " $version " || return 1
2525 __sdkman_check_candidate_present " $candidate " || return 1
2626
27- if [[ ! -d " ${SDKMAN_CANDIDATES_DIR} /${candidate} /${version} " ]]; then
28- echo " "
29- __sdkman_echo_red " Stop! Candidate version is not installed."
30- echo " "
31- __sdkman_echo_yellow " Tip: Run the following to install this version"
32- echo " "
33- __sdkman_echo_yellow " $ sdk install ${candidate} ${version} "
34- return 1
35- fi
36-
37- # Just update the *_HOME and PATH for this shell.
38- __sdkman_set_candidate_home " $candidate " " $version "
39-
40- if [[ $PATH =~ ${SDKMAN_CANDIDATES_DIR} /${candidate} /([^/]+) ]]; then
41- local matched_version
42-
43- if [[ " $zsh_shell " == " true" ]]; then
44- matched_version=${match[1]}
27+ major_version=$( echo $version | cut -d. -f1)
28+ if [[ " $major_version " == " $version " ]]; then
29+ count=0
30+
31+ for dir in " ${SDKMAN_CANDIDATES_DIR} /${candidate} " /* ; do
32+ if [ -d " $dir " ] && [[ " $( basename " $dir " ) " == " ${major_version} " * ]];
33+ then
34+ (( count++ ))
35+ fi
36+ done
37+ if [[ ${count} -eq 0 ]]
38+ then
39+ echo " "
40+ __sdkman_echo_red " Stop! No matching version found."
41+ echo " "
42+ elif [[ ${count} -eq 1 ]]
43+ then
44+ version=$( basename $( ls -d " ${SDKMAN_CANDIDATES_DIR} /${candidate} /${major_version} " * ) )
45+ if [[ $PATH =~ ${SDKMAN_CANDIDATES_DIR} /${candidate} /([^/]+) ]]; then
46+ local matched_version
47+
48+ if [[ " $zsh_shell " == " true" ]]; then
49+ matched_version=${match[1]}
50+ else
51+ matched_version=${BASH_REMATCH[1]}
52+ fi
53+
54+ export PATH=${PATH// ${SDKMAN_CANDIDATES_DIR} \/ ${candidate} \/ ${matched_version} / ${SDKMAN_CANDIDATES_DIR} \/ ${candidate} \/ ${version} }
55+ fi
56+ __sdkman_echo_green " Using ${candidate} version ${version} in this shell."
4557 else
46- matched_version=${BASH_REMATCH[1]}
58+ echo " "
59+ __sdkman_echo_red " Stop! Cannot decide which version to use."
60+ echo " "
61+ __sdkman_echo_yellow
62+ fi
63+ else
64+ if [[ ! -d " ${SDKMAN_CANDIDATES_DIR} /${candidate} /${version} " ]]; then
65+ echo " "
66+ __sdkman_echo_red " Stop! Candidate version is not installed."
67+ echo " "
68+ __sdkman_echo_yellow " Tip: Run the following to install this version"
69+ echo " "
70+ __sdkman_echo_yellow " $ sdk install ${candidate} ${version} "
71+ return 1
4772 fi
48-
49- export PATH=${PATH// ${SDKMAN_CANDIDATES_DIR} \/ ${candidate} \/ ${matched_version} / ${SDKMAN_CANDIDATES_DIR} \/ ${candidate} \/ ${version} }
50- fi
51-
52- if [[ ! (-L " ${SDKMAN_CANDIDATES_DIR} /${candidate} /current" || -d " ${SDKMAN_CANDIDATES_DIR} /${candidate} /current" ) ]]; then
53- __sdkman_echo_green " Setting ${candidate} version ${version} as default."
54- __sdkman_link_candidate_version " $candidate " " $version "
73+
74+ # Just update the *_HOME and PATH for this shell.
75+ __sdkman_set_candidate_home " $candidate " " $version "
76+
77+ if [[ $PATH =~ ${SDKMAN_CANDIDATES_DIR} /${candidate} /([^/]+) ]]; then
78+ local matched_version
79+
80+ if [[ " $zsh_shell " == " true" ]]; then
81+ matched_version=${match[1]}
82+ else
83+ matched_version=${BASH_REMATCH[1]}
84+ fi
85+
86+ export PATH=${PATH// ${SDKMAN_CANDIDATES_DIR} \/ ${candidate} \/ ${matched_version} / ${SDKMAN_CANDIDATES_DIR} \/ ${candidate} \/ ${version} }
87+ fi
88+
89+ if [[ ! (-L " ${SDKMAN_CANDIDATES_DIR} /${candidate} /current" || -d " ${SDKMAN_CANDIDATES_DIR} /${candidate} /current" ) ]]; then
90+ __sdkman_echo_green " Setting ${candidate} version ${version} as default."
91+ __sdkman_link_candidate_version " $candidate " " $version "
92+ fi
93+
94+ echo " "
95+ __sdkman_echo_green " Using ${candidate} version ${version} in this shell."
5596 fi
56-
57- echo " "
58- __sdkman_echo_green " Using ${candidate} version ${version} in this shell."
5997}
0 commit comments