mirror of
https://github.com/sdkman/sdkman-cli.git
synced 2026-04-24 17:09:52 -04:00
Automatically execute sdk env when entering a directory with an .sdkmanrc (#757)
Add auto-env functionality. Authored-by: Oliver Weiler <oliver.weiler@meinestadt.de>
This commit is contained in:
committed by
Marco Vermeulen
parent
ade991ab08
commit
bcb97dcca5
@@ -128,3 +128,21 @@ for candidate_name in "${SDKMAN_CANDIDATES[@]}"; do
|
||||
done
|
||||
unset candidate_name candidate_dir
|
||||
export PATH
|
||||
|
||||
if [[ "$sdkman_auto_env" == "true" ]]; then
|
||||
if [[ "$zsh_shell" == "true" ]]; then
|
||||
function sdkman_auto_env() {
|
||||
[[ -f ".sdkmanrc" ]] && sdk env
|
||||
}
|
||||
|
||||
chpwd_functions+=(sdkman_auto_env)
|
||||
else
|
||||
function sdkman_auto_env() {
|
||||
[[ "$SDKMAN_OLD_PWD" != "$PWD" ]] && [[ -f ".sdkmanrc" ]] && sdk env
|
||||
|
||||
export SDKMAN_OLD_PWD="$PWD"
|
||||
}
|
||||
|
||||
[[ -z "$PROMPT_COMMAND" ]] && PROMPT_COMMAND="sdkman_auto_env" || PROMPT_COMMAND="${PROMPT_COMMAND%\;};sdkman_auto_env"
|
||||
fi
|
||||
fi
|
||||
@@ -1,6 +1,7 @@
|
||||
package sdkman.specs
|
||||
|
||||
import sdkman.support.SdkmanEnvSpecification
|
||||
import spock.lang.Unroll
|
||||
|
||||
import java.nio.file.Paths
|
||||
|
||||
@@ -91,6 +92,41 @@ class EnvCommandSpec extends SdkmanEnvSpecification {
|
||||
]
|
||||
}
|
||||
|
||||
def "should execute 'sdk env' when entering a directory with an .sdkmanrc"() {
|
||||
given:
|
||||
new FileTreeBuilder(candidatesDirectory).with {
|
||||
"groovy" {
|
||||
"2.4.1" {}
|
||||
}
|
||||
}
|
||||
|
||||
bash = sdkmanBashEnvBuilder
|
||||
.withVersionCache("x.y.z")
|
||||
.withOfflineMode(true)
|
||||
.withConfiguration("sdkman_auto_env", sdkmanAutoEnv)
|
||||
.build()
|
||||
|
||||
new FileTreeBuilder(bash.workDir).with {
|
||||
"project" {
|
||||
".sdkmanrc"("groovy=2.4.1\n")
|
||||
}
|
||||
}
|
||||
|
||||
bash.start()
|
||||
bash.execute("source $bootstrapScript")
|
||||
|
||||
when:
|
||||
bash.execute("cd project")
|
||||
|
||||
then:
|
||||
verifyOutput(bash.output)
|
||||
|
||||
where:
|
||||
sdkmanAutoEnv | verifyOutput
|
||||
'true' | { it.contains("Using groovy version 2.4.1 in this shell") }
|
||||
'false' | { !it.contains("Using groovy version 2.4.1 in this shell") }
|
||||
}
|
||||
|
||||
def "should issue an error if .sdkmanrc contains a malformed candidate version"() {
|
||||
given:
|
||||
bash = sdkmanBashEnvBuilder
|
||||
|
||||
Reference in New Issue
Block a user