From cfa828ec199e0268bce5bab66f974c20c16f369c Mon Sep 17 00:00:00 2001 From: crater2150 Date: Wed, 28 Aug 2024 17:55:49 +0200 Subject: [PATCH] add plugin to set java home per directory --- .zimrc | 1 + plugins/cs-java-home/cs-java-home.plugin.zsh | 41 ++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 plugins/cs-java-home/cs-java-home.plugin.zsh diff --git a/.zimrc b/.zimrc index d600952..fdcf8ef 100644 --- a/.zimrc +++ b/.zimrc @@ -6,6 +6,7 @@ zmodule crater2150-zsh/chroma-z zmodule $ZDOTDIR/plugins/tmpsrc zmodule $ZDOTDIR/plugins/pyenv +zmodule $ZDOTDIR/plugins/cs-java-home zmodule $ZDOTDIR/plugins/highlight-config zmodule zsh-users/zsh-syntax-highlighting diff --git a/plugins/cs-java-home/cs-java-home.plugin.zsh b/plugins/cs-java-home/cs-java-home.plugin.zsh new file mode 100644 index 0000000..f64f84d --- /dev/null +++ b/plugins/cs-java-home/cs-java-home.plugin.zsh @@ -0,0 +1,41 @@ +typeset -a chpwd_functions __chromaz_extra_left + +SYSTEM_JAVA_HOME=${CS_FORMER_JAVA_HOME:-$JAVA_HOME} + +local cs_jvm_id +local cs_java_home + +remove-from-path() { + for elem in $@; do + path=("${(@)path:#$elem}") + done +} + +cs-set-java-home() { + local dir=${1:-${PWD:a}} + if [[ $dir == / ]]; then + export JAVA_HOME=${SYSTEM_JAVA_HOME} + remove-from-path $cs_java_home/bin + cs_jvm_id= + return + fi + if [[ -e $dir/.jvm ]]; then + cs_jvm_id=$(<$dir/.jvm) + #echo "Setting Java version to ${cs_jvm_id}" + cs_java_home=$(cs java-home --jvm ${cs_jvm_id}) + path=( $cs_java_home/bin $path ) + export JAVA_HOME=${cs_java_home} + else + cs-set-java-home ${dir:h} + fi + + # +} + +cs-current-java() { + echo ${cs_jvm_id:+JVM: }${cs_jvm_id} +} + +chpwd_functions+=cs-set-java-home +__chromaz_extra_left+=cs-current-java +cs-set-java-home