Skip to content

Commit 6d7a4f1

Browse files
committed
Auto-provision workspace for Android app sample
1 parent 51662ac commit 6d7a4f1

File tree

1 file changed

+81
-40
lines changed

1 file changed

+81
-40
lines changed

scripts/build-android-app.sh

Lines changed: 81 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -17,58 +17,99 @@ ENV_DIR="$DOWNLOAD_DIR/tools"
1717
EXTRA_MVN_ARGS=("$@")
1818

1919
ENV_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
59104
fi
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
72113
fi
73114

74115
ba_log "Using JAVA_HOME at $JAVA_HOME"

0 commit comments

Comments
 (0)