From 705c058f9590f8c9b50356413c18af9f9c6e8be0 Mon Sep 17 00:00:00 2001 From: Guilherme Beltramini Date: Sat, 12 Jul 2025 11:22:26 -0300 Subject: [PATCH 1/3] Add command to set up Java --- commands/setup/java.sh | 105 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100755 commands/setup/java.sh diff --git a/commands/setup/java.sh b/commands/setup/java.sh new file mode 100755 index 0000000..ec4ce64 --- /dev/null +++ b/commands/setup/java.sh @@ -0,0 +1,105 @@ +#!/usr/bin/env bash +set -euo pipefail + +source "${CLI_DIR}/core/helpers.sh" + +##? Set up Java on your computer. +##? +##? This script installs 'jenv' and Azul Zulu Java, which works in architectures x86_64 and arm64. +##? +##? Usage: +##? setup java [--version=VERSION] +##? +##? Options: +##? --version=VERSION Java version (8, 11, 17, 21) [default: 21] +##? +##? References: +##? - https://www.oracle.com/java/technologies/java-se-support-roadmap.html +##? - https://www.azul.com/downloads/?package=jdk#zulu +##? +##? Examples: +##? setup java +##? setup java --version=17 + +parse_help "$@" +declare version + +color='blue' + +new_section_with_color "$color" "Install 'jenv' and Azul Zulu version $version" +brew install jenv zulu@"$version" +echo_done + +new_section_with_color "$color" "Edit '$HOME/.zshrc' to set up 'jenv'" +# shellcheck disable=SC2016 +if grep -q '^eval "$(jenv init -)"' "$HOME/.zshrc"; then + echo "'jenv' is already set up in '$HOME/.zshrc'. No changes needed." +else + cat <<'EOL' >>"$HOME/.zshrc" + +# >>> jenv >>> +export PATH="$HOME/.jenv/bin:$PATH" +eval "$(jenv init -)" +# <<< jenv <<< +EOL +fi +echo_done + +new_section_with_color "$color" "Enable 'jenv' 'export' plugin" +export PATH="$HOME/.jenv/bin:$PATH" +export PROMPT_COMMAND="" # Fix for unbound PROMPT_COMMAND in non-interactive shells +eval "$(jenv init -)" +jenv enable-plugin export +echo_done + +# new_section_with_color "$color" "Restart shell" +# source "$HOME/.zshrc" +# echo_done + +new_section_with_color "$color" "Remove current Java versions from 'jenv'" +rm -f ~/.jenv/shims/.jenv-shim +for v in $(jenv versions --bare); do + jenv remove "$v" +done +rm -f ~/.jenv/version +echo_done + +new_section_with_color "$color" "Check current state of 'jenv'" +jenv versions --verbose +# jenv doctor +# echo "Run 'jenv remove ...' if you get the error 'jenv: version ... is not installed'" + +new_section_with_color "$color" "Show all 'java' command paths" +java_paths=$(find /Library/Java/JavaVirtualMachines \ + -type f \ + -path '*/Contents/Home/bin/*' \ + -name 'java' | + sed 's:bin/java$::') +echo "$java_paths" +echo_done + +new_section_with_color "$color" "Add all 'java' commands to 'jenv'" +while IFS= read -r java_path; do + jenv add "$java_path" +done <<<"$java_paths" +echo_done + +new_section_with_color "$color" "Set global Java version" +if [[ $version == '8' ]]; then + global_version='1.8' +else + global_version="$version" +fi +echo "Setting global Java version to '$global_version'..." +jenv global "$global_version" +echo_done + +new_section_with_color "$color" "Check current state of 'jenv'" +echo "'jenv versions':" +jenv versions --verbose +echo +echo "'jenv doctor':" +jenv doctor || : + +new_section_with_color "$color" "'java --version' output" +java --version From e5833fdbd3afe886ae98c02331680363d963da07 Mon Sep 17 00:00:00 2001 From: Guilherme Beltramini Date: Sat, 12 Jul 2025 11:25:58 -0300 Subject: [PATCH 2/3] Add README --- commands/setup/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 commands/setup/README.md diff --git a/commands/setup/README.md b/commands/setup/README.md new file mode 100644 index 0000000..d181ca4 --- /dev/null +++ b/commands/setup/README.md @@ -0,0 +1,3 @@ +# `mycli setup` + +Commands that help automate setup tasks and ensure your environment is ready for development. From 6ed4bd68ae13d748a3b5fe170c1518cc0ecd1928 Mon Sep 17 00:00:00 2001 From: Guilherme Beltramini Date: Sat, 12 Jul 2025 11:26:48 -0300 Subject: [PATCH 3/3] Reduce description --- commands/setup/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/setup/README.md b/commands/setup/README.md index d181ca4..8f4557d 100644 --- a/commands/setup/README.md +++ b/commands/setup/README.md @@ -1,3 +1,3 @@ # `mycli setup` -Commands that help automate setup tasks and ensure your environment is ready for development. +Automate setup tasks and ensure your environment is ready for development