@@ -24,36 +24,74 @@ function __sdk_use() {
24
24
__sdkman_check_version_present " $version " || return 1
25
25
__sdkman_check_candidate_present " $candidate " || return 1
26
26
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."
45
57
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
47
72
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."
55
96
fi
56
-
57
- echo " "
58
- __sdkman_echo_green " Using ${candidate} version ${version} in this shell."
59
97
}
0 commit comments