@@ -17,58 +17,99 @@ ENV_DIR="$DOWNLOAD_DIR/tools"
1717EXTRA_MVN_ARGS=(" $@ " )
1818
1919ENV_FILE=" $ENV_DIR /env.sh"
20- ba_log " Loading workspace environment from $ENV_FILE "
21- if [ -f " $ENV_FILE " ] ; then
20+
21+ log_env_file () {
2222 ba_log " Workspace environment file metadata"
2323 ls -l " $ENV_FILE " | while IFS= read -r line; do ba_log " $line " ; done
2424 ba_log " Workspace environment file contents"
2525 sed ' s/^/[build-android-app] ENV: /' " $ENV_FILE "
26+ }
27+
28+ log_directory_listing () {
29+ local path=" $1 "
30+ if [ -d " $path " ]; then
31+ ls -l " $path " | while IFS= read -r line; do ba_log " $line " ; done
32+ else
33+ ba_log " Directory $path does not exist"
34+ fi
35+ }
36+
37+ load_workspace_env () {
38+ if [ ! -f " $ENV_FILE " ]; then
39+ return 1
40+ fi
41+ log_env_file
2642 # shellcheck disable=SC1090
2743 source " $ENV_FILE "
2844 ba_log " Loaded environment: JAVA_HOME=${JAVA_HOME:- <unset>} JAVA17_HOME=${JAVA17_HOME:- <unset>} MAVEN_HOME=${MAVEN_HOME:- <unset>} "
29- else
30- ba_log " Workspace tools not found. Run scripts/setup-workspace.sh before this script." >&2
31- exit 1
32- fi
45+ return 0
46+ }
3347
34- if [ -z " ${JAVA_HOME:- } " ] || [ ! -x " $JAVA_HOME /bin/java" ]; then
35- ba_log " JAVA_HOME validation failed. Current value: ${JAVA_HOME:- <unset>} " >&2
36- if [ -n " ${JAVA_HOME:- } " ]; then
37- ba_log " Contents of JAVA_HOME directory"
38- if [ -d " $JAVA_HOME " ]; then
39- ls -l " $JAVA_HOME " | while IFS= read -r line; do ba_log " $line " ; done
40- else
41- ba_log " JAVA_HOME directory does not exist"
42- fi
48+ validate_java_home () {
49+ local name=" $1 " home=" $2 " pattern=" $3 "
50+ if [ -z " $home " ]; then
51+ ba_log " $name validation failed. Current value: <unset>" >&2
52+ return 1
4353 fi
44- ba_log " JAVA_HOME is not set correctly. Please run scripts/setup-workspace.sh first." >&2
45- exit 1
46- fi
47- if [ -z " ${JAVA17_HOME:- } " ] || [ ! -x " $JAVA17_HOME /bin/java" ]; then
48- ba_log " JAVA17_HOME validation failed. Current value: ${JAVA17_HOME:- <unset>} " >&2
49- if [ -n " ${JAVA17_HOME:- } " ]; then
50- ba_log " Contents of JAVA17_HOME directory"
51- if [ -d " $JAVA17_HOME " ]; then
52- ls -l " $JAVA17_HOME " | while IFS= read -r line; do ba_log " $line " ; done
53- else
54- ba_log " JAVA17_HOME directory does not exist"
55- fi
54+ if [ ! -x " $home /bin/java" ]; then
55+ ba_log " $name validation failed. java binary not found under $home " >&2
56+ log_directory_listing " $home "
57+ return 1
5658 fi
57- ba_log " JAVA17_HOME is not set correctly. Please run scripts/setup-workspace.sh first." >&2
58- exit 1
59+ local version_output
60+ version_output=" $( $home /bin/java -version 2>&1 || true) "
61+ if ! grep -q " $pattern " <<< " $version_output" ; then
62+ ba_log " $name java -version output did not match $pattern (value: $home )" >&2
63+ while IFS= read -r line; do ba_log " $line " ; done <<< " $version_output"
64+ return 1
65+ fi
66+ return 0
67+ }
68+
69+ validate_maven_home () {
70+ local home=" $1 "
71+ if [ -z " $home " ]; then
72+ ba_log " MAVEN_HOME validation failed. Current value: <unset>" >&2
73+ return 1
74+ fi
75+ if [ ! -x " $home /bin/mvn" ]; then
76+ ba_log " MAVEN_HOME validation failed. Current value: $home (mvn binary not found)" >&2
77+ log_directory_listing " $home "
78+ return 1
79+ fi
80+ return 0
81+ }
82+
83+ validate_workspace_env () {
84+ local failed=0
85+ validate_java_home " JAVA_HOME" " ${JAVA_HOME:- } " ' 1\\.8' || failed=1
86+ validate_java_home " JAVA17_HOME" " ${JAVA17_HOME:- } " ' 17\\.' || failed=1
87+ validate_maven_home " ${MAVEN_HOME:- } " || failed=1
88+ return $failed
89+ }
90+
91+ provision_workspace () {
92+ ba_log " Provisioning workspace tools via scripts/setup-workspace.sh"
93+ " $REPO_ROOT /scripts/setup-workspace.sh" -q -DskipTests
94+ if ! load_workspace_env; then
95+ ba_log " Unable to load workspace environment from $ENV_FILE after provisioning." >&2
96+ exit 1
97+ fi
98+ }
99+
100+ ba_log " Loading workspace environment from $ENV_FILE "
101+ if ! load_workspace_env; then
102+ ba_log " Workspace tools not found. Running scripts/setup-workspace.sh." >&2
103+ provision_workspace
59104fi
60- if [ -z " ${MAVEN_HOME:- } " ] || [ ! -x " $MAVEN_HOME /bin/mvn" ]; then
61- ba_log " MAVEN_HOME validation failed. Current value: ${MAVEN_HOME:- <unset>} " >&2
62- if [ -n " ${MAVEN_HOME:- } " ]; then
63- ba_log " Contents of MAVEN_HOME directory"
64- if [ -d " $MAVEN_HOME " ]; then
65- ls -l " $MAVEN_HOME " | while IFS= read -r line; do ba_log " $line " ; done
66- else
67- ba_log " MAVEN_HOME directory does not exist"
68- fi
105+
106+ if ! validate_workspace_env; then
107+ ba_log " Workspace validation failed. Re-provisioning tools." >&2
108+ provision_workspace
109+ if ! validate_workspace_env; then
110+ ba_log " Workspace validation failed after provisioning. Please inspect $ENV_FILE ." >&2
111+ exit 1
69112 fi
70- ba_log " Maven is not available. Please run scripts/setup-workspace.sh first." >&2
71- exit 1
72113fi
73114
74115ba_log " Using JAVA_HOME at $JAVA_HOME "
0 commit comments