Skip to content

Commit 0ddeabb

Browse files
azhuchkovmarc0der
andcommitted
fix: optimize home and path env vars to speed up shell init
Co-Authored-By: Marco Vermeulen <[email protected]>
1 parent dda90bc commit 0ddeabb

File tree

1 file changed

+17
-14
lines changed

1 file changed

+17
-14
lines changed

src/main/bash/sdkman-path-helpers.sh

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -50,28 +50,31 @@ function __sdkman_set_candidate_home() {
5050
}
5151

5252
function __sdkman_export_candidate_home() {
53-
local candidate_name="$1"
54-
local candidate_dir="$2"
55-
local candidate_home_var="$(echo ${candidate_name} | tr '[:lower:]' '[:upper:]')_HOME"
56-
export $(echo "$candidate_home_var")="$candidate_dir"
57-
}
53+
local candidate_name candidate_dir ucase_candidate_name
54+
55+
candidate_name="$1"
56+
candidate_dir="$2"
5857

59-
function __sdkman_determine_candidate_bin_dir() {
60-
local candidate_dir="$1"
61-
if [[ -d "${candidate_dir}/bin" ]]; then
62-
echo "${candidate_dir}/bin"
58+
if [ "$zsh_shell" = true ]; then
59+
ucase_candidate_name="${candidate_name:u}"
60+
elif [ "$bash_shell" = true ]; then
61+
ucase_candidate_name="${candidate_name^^}"
6362
else
64-
echo "$candidate_dir"
63+
ucase_candidate_name="$(printf %s "$candidate_name" | tr '[:lower:]' '[:upper:]')"
6564
fi
65+
66+
export "${ucase_candidate_name}_HOME=$candidate_dir"
6667
}
6768

6869
function __sdkman_prepend_candidate_to_path() {
69-
local candidate_dir candidate_bin_dir
70+
local candidate_dir
7071

7172
candidate_dir="$1"
72-
candidate_bin_dir=$(__sdkman_determine_candidate_bin_dir "$candidate_dir")
73-
echo "$PATH" | grep -q "$candidate_dir" || PATH="${candidate_bin_dir}:${PATH}"
74-
unset CANDIDATE_BIN_DIR
73+
74+
if [ -d "${candidate_dir}/bin" ]; then
75+
candidate_dir="${candidate_dir}/bin"
76+
fi
77+
[[ ":$PATH:" == *":$candidate_dir:"* ]] || PATH="${candidate_dir}:${PATH}"
7578
}
7679

7780
function __sdkman_link_candidate_version() {

0 commit comments

Comments
 (0)