From f97f64d65934e44d81a2d1fa96c4b3b19944c002 Mon Sep 17 00:00:00 2001 From: rprcz <121183144+rprcz@users.noreply.github.com> Date: Fri, 17 Nov 2023 17:41:34 +0100 Subject: [PATCH 1/2] autoenv support --- init.fish | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/init.fish b/init.fish index cecf8a4..9f2aa4e 100644 --- a/init.fish +++ b/init.fish @@ -4,4 +4,27 @@ if type -q fenv set -g sdkman_prefix $SDKMAN_DIR fenv "source $sdkman_prefix/bin/sdkman-init.sh" + + if set -q SDKMAN_DIR && grep -q "^sdkman_auto_env=true" "$SDKMAN_DIR/etc/config" + function __omf_sdk_sdkman_auto_env --on-variable PWD + + # chdir from current SDKMAN_ENV dirtree outside + # or + # chdir into dir with .sdkmanrc that doesn't match the current SDKMAN_ENV root + if begin; test -n $SDKMAN_ENV && not string match -q "$SDKMAN_ENV/**" "$PWD/"; end \ + || begin; test "$SDKMAN_OLD_PWD" != "$PWD" && test "$SDKMAN_ENV" != "$PWD" && test -f ".sdkmanrc"; end + + # runs SDKMAN's chdir hook, results in `sdk env clear` (if there was a previous SDKMAN_ENV) and `sdk env` (if there is a new .sdkmanrc) + fenv "source $sdkman_prefix/bin/sdkman-init.sh && export SDKMAN_ENV" + + # there was `sdk env clear` without `sdk env` + if not test -f ".sdkmanrc" + # unset SDKMAN_ENV as fenv can't currently unset variables + set -eg SDKMAN_ENV + end + end + + set -gx SDKMAN_OLD_PWD "$PWD" + end + end end From 48ca26bfad8260d9452fbd10d24d24628385ecf0 Mon Sep 17 00:00:00 2001 From: rprcz <121183144+rprcz@users.noreply.github.com> Date: Wed, 22 Nov 2023 22:32:33 +0100 Subject: [PATCH 2/2] use sdkman_prefix variable instead of SDKMAN_DIR --- init.fish | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.fish b/init.fish index 9f2aa4e..5a83185 100644 --- a/init.fish +++ b/init.fish @@ -5,7 +5,7 @@ if type -q fenv fenv "source $sdkman_prefix/bin/sdkman-init.sh" - if set -q SDKMAN_DIR && grep -q "^sdkman_auto_env=true" "$SDKMAN_DIR/etc/config" + if grep -q "^sdkman_auto_env=true" "$sdkman_prefix/etc/config" function __omf_sdk_sdkman_auto_env --on-variable PWD # chdir from current SDKMAN_ENV dirtree outside