jenv is a nice app, but its bootstrap is slow. I dislike initializing it every terminal I open.
I created this zsh function to initialize it only if you enter a directory of a java project.
It is evaluated before the prompt using precmd function.
| function evaluate_jenv() { | |
| if [ ! -v JENV_LOADED ]; then | |
| setopt local_options nullglob | |
| [ -f pom.xml -o -f build.gradle.kts -o -f build.sbt -o -f build.xml -o -f .java-version -o -f .deps.edn -o -f project.clj -o -f build.boot ] && files=1 | |
| if [ ! -v files ]; then | |
| extensions=(*.java, *.class, *.gradle, *.jar, *.cljs, *.cljc) | |
| if [ -z "$extensions" ]; then | |
| return | |
| fi | |
| fi | |
| echo "Initializing jenv..." | |
| eval "$(jenv init -)" | |
| fi | |
| } | |
| typeset -a precmd_functions | |
| precmd_functions+=(evaluate_jenv) |
/ cd /tmp
Initializing jenv...
/home/user/java/project/ via ☕ v11.0.15