Skip to content

Commit 563a7ad

Browse files
committed
refactor: split java_utils.sh
1 parent 63c1e0e commit 563a7ad

File tree

4 files changed

+169
-78
lines changed

4 files changed

+169
-78
lines changed

README.md

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,22 @@ api functions:
6666
- `cu::print_calling_command_line`
6767
- `cu::die`
6868

69+
## [`java_utils.sh`](lib/javautils.sh)
70+
71+
java util functions.
72+
73+
api functions:
74+
75+
- `jvu::get_java_version`
76+
- `jvu::switch_to_jdk`
77+
- `jvu::java_cmd`
78+
6979
## [`java_build_utils.sh`](lib/java_build_utils.sh)
7080

71-
java and maven util functions for build.
81+
maven util functions for build.
7282

7383
api functions:
7484

75-
- java operation functions:
76-
- `jvb::get_java_version`
77-
- `jvb::java_cmd`
7885
- maven operation functions:
7986
- `jvb::mvn_cmd`
8087

lib/java_build_utils.sh

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -23,41 +23,6 @@ set -eEuo pipefail
2323
# shellcheck source=common_utils.sh
2424
source "$__source_guard_364DF1B5_9CA2_44D3_9C62_CDF6C2ECB24F/common_utils.sh"
2525

26-
#################################################################################
27-
# java operation functions
28-
#################################################################################
29-
30-
# output the java version extracted from `java -version`
31-
jvb::get_java_version() {
32-
(($# <= 1)) || cu::die "${FUNCNAME[0]} requires at most 1 argument! But provided $#: $*"
33-
34-
local java_home_path="${1:-$JAVA_HOME}"
35-
"$java_home_path/bin/java" -version 2>&1 | awk -F\" '/ version "/{print $2}'
36-
}
37-
38-
# FIXME hard code memery settings
39-
# shellcheck disable=SC2034
40-
readonly JVB_DEFAULT_JAVA_OPTS=(
41-
-Xmx256m -Xms256m
42-
-server -ea
43-
-Duser.language=en -Duser.country=US
44-
)
45-
46-
readonly JVB_JAVA_OPT_DEFAULT_DEBUG_PORT=5050
47-
48-
# set env variable ENABLE_JAVA_RUN_DEBUG to enable java debug mode
49-
jvb::java_cmd() {
50-
(($# > 0)) || cu::die "${FUNCNAME[0]} requires arguments! But no provided"
51-
52-
local debug_opts="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=${JVB_JAVA_OPT_DEBUG_PORT}"
53-
54-
cu::log_then_run "$JAVA_HOME/bin/java" \
55-
"${JVB_JAVA_OPTS[@]}" \
56-
${JVB_ENABLE_JAVA_RUN_VERBOSE_CLASS+-verbose:class} \
57-
${JVB_ENABLE_JAVA_RUN_DEBUG+$debug_opts} \
58-
"$@"
59-
}
60-
6126
#################################################################################
6227
# maven operation functions
6328
#################################################################################
@@ -143,14 +108,6 @@ jvb::get_mvn_local_repository_dir() {
143108
jvb::__auto_run_when_source() {
144109
# set VAR if absent
145110

146-
if [ -z "${JVB_JAVA_OPT_DEBUG_PORT:-}" ]; then
147-
JVB_JAVA_OPT_DEBUG_PORT="$JVB_JAVA_OPT_DEFAULT_DEBUG_PORT"
148-
fi
149-
150-
if [ -z "${JVB_JAVA_OPTS[*]:-}" ]; then
151-
JVB_JAVA_OPTS=("${JVB_DEFAULT_JAVA_OPTS[@]}")
152-
fi
153-
154111
if [ -z "${JVB_MVN_OPTS[*]:-}" ]; then
155112
JVB_MVN_OPTS=("${JVB_DEFAULT_MVN_OPTS[@]}")
156113
fi

lib/java_utils.sh

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
#!/bin/bash
2+
#
3+
# java util functions.
4+
#
5+
################################################################################
6+
# api functions:
7+
#
8+
# - java operation functions:
9+
# - jvu::get_java_version
10+
# - jvu::java_cmd
11+
################################################################################
12+
#
13+
#_ source guard begin _#
14+
[ -z "${__source_guard_ED79675F_4289_4394_A843_03D06DB48AFA:+has_value}" ] || return 0
15+
__source_guard_ED79675F_4289_4394_A843_03D06DB48AFA="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
16+
readonly __source_guard_ED79675F_4289_4394_A843_03D06DB48AFA
17+
#_ source guard end _#
18+
19+
set -eEuo pipefail
20+
21+
# shellcheck source=common_utils.sh
22+
source "$__source_guard_ED79675F_4289_4394_A843_03D06DB48AFA/common_utils.sh"
23+
24+
#################################################################################
25+
# java info functions
26+
#################################################################################
27+
28+
# output the java version extracted from `java -version`
29+
jvu::get_java_version() {
30+
(($# <= 1)) || cu::die "${FUNCNAME[0]} requires at most 1 argument! But provided $#: $*"
31+
32+
local java_home_path="${1:-$JAVA_HOME}"
33+
"$java_home_path/bin/java" -version 2>&1 | awk -F\" '/ version "/{print $2}'
34+
}
35+
36+
#################################################################################
37+
# java operation functions
38+
#################################################################################
39+
40+
jvu::_validate_java_home() {
41+
_jvu_VALIDATE_JAVA_HOME_ERR_MSG=
42+
43+
local -r java_home="$1"
44+
if cu::is_blank_string "$java_home"; then
45+
_jvu_VALIDATE_JAVA_HOME_ERR_MSG="java home($java_home) is BLANK"
46+
return 1
47+
fi
48+
49+
if [ ! -e "$java_home" ]; then
50+
_jvu_VALIDATE_JAVA_HOME_ERR_MSG="java home($java_home) is NOT existed"
51+
return 1
52+
fi
53+
if [ ! -d "$java_home" ]; then
54+
_jvu_VALIDATE_JAVA_HOME_ERR_MSG="java home($java_home) is NOT directory"
55+
return 1
56+
fi
57+
58+
local java_path="$java_home/bin/java"
59+
if [ ! -f "$java_path" ]; then
60+
_jvu_VALIDATE_JAVA_HOME_ERR_MSG="\$java_home/bin/java($java_path) is NOT existed"
61+
return 1
62+
fi
63+
if [ ! -x "$java_path" ]; then
64+
_jvu_VALIDATE_JAVA_HOME_ERR_MSG="\$java_home/bin/java($java_path) is NOT executable"
65+
return 1
66+
fi
67+
}
68+
69+
# switch JAVA_HOME to target
70+
#
71+
# available switch target:
72+
# - version pattern, e.g. 11, 17
73+
# determinate JAVA_HOME by env var JAVAx_HOME
74+
# - /path/to/java/home
75+
#
76+
# usage:
77+
# jvu::switch_to_jdk 17
78+
# jvu::switch_to_jdk /path/to/java/home
79+
#
80+
jvu::switch_to_jdk() {
81+
[ $# == 1 ] || cu::die "${FUNCNAME[0]} requires exact 1 argument! But provided $#: $*"
82+
83+
local -r switch_target="$1"
84+
cu::is_blank_string "$switch_target" && cu::die "switch target($switch_target) is BLANK!"
85+
86+
# 1. first check env var JAVAx_HOME(e.g. JAVA11_HOME)
87+
#
88+
# aka. set by java version, e.g.
89+
# jvu::switch_to_jdk 11
90+
if cu::is_number_string "$switch_target"; then
91+
local jdk_home_var_name="JAVA${switch_target}_HOME"
92+
# check env var JAVAx_HOME is defined or not
93+
if [ -z "${!jdk_home_var_name+defined}" ]; then
94+
cu::die "use \$$jdk_home_var_name as switch target, but \$$jdk_home_var_name is NOT defined!" >&2
95+
fi
96+
local jdk_home="${!jdk_home_var_name:-}"
97+
if ! jvu::_validate_java_home "$jdk_home"; then
98+
cu::die "found \$$jdk_home_var_name($jdk_home) for switch target $switch_target, but $_jvu_VALIDATE_JAVA_HOME_ERR_MSG!" >&2
99+
fi
100+
101+
export JAVA_HOME="$jdk_home"
102+
return
103+
fi
104+
105+
# 2. then switch as a directory
106+
#
107+
# aka. set by path of java installation, e.g.
108+
# jvu::switch_to_jdk /path/to/java/home
109+
local jdk_home="$switch_target"
110+
if ! jvu::_validate_java_home "$jdk_home"; then
111+
cu:die "use $switch_target directory as switch target, but $_jvu_VALIDATE_JAVA_HOME_ERR_MSG!" >&2
112+
fi
113+
export JAVA_HOME="$jdk_home"
114+
}
115+
116+
# FIXME hard code memery settings
117+
# shellcheck disable=SC2034
118+
readonly JVU_DEFAULT_JAVA_OPTS=(
119+
-Xmx256m -Xms256m
120+
-server -ea
121+
-Duser.language=en -Duser.country=US
122+
)
123+
124+
readonly JVU_JAVA_OPT_DEFAULT_DEBUG_PORT=5050
125+
126+
# set env variable ENABLE_JAVA_RUN_DEBUG to enable java debug mode
127+
jvu::java_cmd() {
128+
(($# > 0)) || cu::die "${FUNCNAME[0]} requires arguments! But no provided"
129+
130+
local debug_opts="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=${JVU_JAVA_OPT_DEBUG_PORT}"
131+
132+
cu::log_then_run "$JAVA_HOME/bin/java" \
133+
"${JVU_JAVA_OPTS[@]}" \
134+
${JVU_ENABLE_JAVA_RUN_VERBOSE_CLASS+-verbose:class} \
135+
${JVU_ENABLE_JAVA_RUN_DEBUG+$debug_opts} \
136+
"$@"
137+
}
138+
139+
################################################################################
140+
# auto run logic when source
141+
################################################################################
142+
143+
jvu::__auto_run_when_source() {
144+
# set VAR if absent
145+
146+
if [ -z "${JVU_JAVA_OPT_DEBUG_PORT:-}" ]; then
147+
JVU_JAVA_OPT_DEBUG_PORT="$JVU_JAVA_OPT_DEFAULT_DEBUG_PORT"
148+
fi
149+
150+
if [ -z "${JVU_JAVA_OPTS[*]:-}" ]; then
151+
JVU_JAVA_OPTS=("${JVU_DEFAULT_JAVA_OPTS[@]}")
152+
fi
153+
}
154+
155+
jvu::__auto_run_when_source

lib/prepare_jdks.sh

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ set -eEuo pipefail
2424

2525
# shellcheck source=common_utils.sh
2626
source "$__source_guard_E2AA8C4F_215B_4CDA_9816_429C7A2CD465/common_utils.sh"
27+
source "$__source_guard_E2AA8C4F_215B_4CDA_9816_429C7A2CD465/java_utils.sh"
2728

2829
# install sdkman.
2930
#
@@ -188,35 +189,6 @@ prepare_jdks::_get_latest_java_version() {
188189
echo "$input" | cu::get_latest_version_match "$version_pattern"
189190
}
190191

191-
prepare_jdks::_validate_java_home() {
192-
_PREPARE_JDKS_VALIDATE_JAVA_HOME_ERR_MSG=
193-
194-
local -r java_home="$1"
195-
if cu::is_blank_string "$java_home"; then
196-
_PREPARE_JDKS_VALIDATE_JAVA_HOME_ERR_MSG="java home($java_home) is BLANK"
197-
return 1
198-
fi
199-
200-
if [ ! -e "$java_home" ]; then
201-
_PREPARE_JDKS_VALIDATE_JAVA_HOME_ERR_MSG="java home($java_home) is NOT existed"
202-
return 1
203-
fi
204-
if [ ! -d "$java_home" ]; then
205-
_PREPARE_JDKS_VALIDATE_JAVA_HOME_ERR_MSG="java home($java_home) is NOT directory"
206-
return 1
207-
fi
208-
209-
local java_path="$java_home/bin/java"
210-
if [ ! -f "$java_path" ]; then
211-
_PREPARE_JDKS_VALIDATE_JAVA_HOME_ERR_MSG="\$java_home/bin/java($java_path) is NOT existed"
212-
return 1
213-
fi
214-
if [ ! -x "$java_path" ]; then
215-
_PREPARE_JDKS_VALIDATE_JAVA_HOME_ERR_MSG="\$java_home/bin/java($java_path) is NOT executable"
216-
return 1
217-
fi
218-
}
219-
220192
# switch JAVA_HOME to target
221193
#
222194
# available switch target:
@@ -266,7 +238,7 @@ prepare_jdks::switch_to_jdk() {
266238
if [ -n "${!jdk_home_var_name+defined}" ]; then
267239
local jdk_home="${!jdk_home_var_name:-}"
268240

269-
if prepare_jdks::_validate_java_home "$jdk_home"; then
241+
if jvu::_validate_java_home "$jdk_home"; then
270242
if ! $prepare_mode; then
271243
export JAVA_HOME="$jdk_home"
272244
fi
@@ -323,7 +295,7 @@ prepare_jdks::switch_to_jdk() {
323295
local jdk_home
324296
jdk_home="$(prepare_jdks::_get_jdk_path_from_jdk_name_of_sdkman "$version")"
325297

326-
if prepare_jdks::_validate_java_home "$jdk_home"; then
298+
if jvu::_validate_java_home "$jdk_home"; then
327299
if ! $prepare_mode; then
328300
export JAVA_HOME="$jdk_home"
329301
fi

0 commit comments

Comments
 (0)