Skip to content

Commit 75fd2f9

Browse files
committed
Harden workspace provisioning checks
1 parent f6d7996 commit 75fd2f9

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

scripts/setup-workspace.sh

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -81,43 +81,47 @@ install_jdk() {
8181
curl -fL "$url" -o "$archive"
8282
fi
8383

84-
# Find top directory name inside the tarball
8584
local top
8685
top=$(tar -tzf "$archive" 2>/dev/null | head -1 | cut -d/ -f1 || true)
86+
if [ -z "$top" ]; then
87+
log "Unable to determine extracted directory from $(basename "$archive")" >&2
88+
exit 1
89+
fi
8790

88-
# Extract only if target directory doesn't already exist
89-
if [ -n "$top" ] && [ -d "$DOWNLOAD_DIR/$top" ]; then
90-
log "JDK already extracted at $DOWNLOAD_DIR/$top"
91+
local extracted="$DOWNLOAD_DIR/$top"
92+
if [ -d "$extracted" ]; then
93+
log "JDK already extracted at $extracted"
9194
else
9295
log "Extracting JDK to $DOWNLOAD_DIR"
9396
tar -xzf "$archive" -C "$DOWNLOAD_DIR"
9497
fi
9598

96-
local home="$DOWNLOAD_DIR/$top"
99+
local home="$extracted"
97100
if [ -d "$home/Contents/Home" ]; then
98101
home="$home/Contents/Home"
99102
fi
100-
eval "$dest_var=\"$home\""
103+
104+
printf -v "$dest_var" '%s' "$home"
101105
}
102106

103107
log "Ensuring JDK 8 is available"
104-
if [ ! -x "${JAVA_HOME:-}/bin/java" ] || ! "${JAVA_HOME:-}/bin/java" -version 2>&1 | grep -q '8\.0'; then
108+
if [ -z "${JAVA_HOME:-}" ] || [ ! -x "$JAVA_HOME/bin/java" ] || ! "$JAVA_HOME/bin/java" -version 2>&1 | grep -q '8\.0'; then
105109
log "Provisioning JDK 8..."
106110
install_jdk "$JDK8_URL" JAVA_HOME
107111
else
108112
log "Using existing JDK 8 at $JAVA_HOME"
109113
fi
110114

111115
log "Ensuring JDK 17 is available"
112-
if [ ! -x "${JAVA_HOME_17:-}/bin/java" ] || ! "${JAVA_HOME_17:-}/bin/java" -version 2>&1 | grep -q '17\.0'; then
116+
if [ -z "${JAVA_HOME_17:-}" ] || [ ! -x "$JAVA_HOME_17/bin/java" ] || ! "$JAVA_HOME_17/bin/java" -version 2>&1 | grep -q '17\.0'; then
113117
log "Provisioning JDK 17..."
114118
install_jdk "$JDK17_URL" JAVA_HOME_17
115119
else
116120
log "Using existing JDK 17 at $JAVA_HOME_17"
117121
fi
118122

119123
log "Ensuring Maven is available"
120-
if ! [ -x "${MAVEN_HOME:-}/bin/mvn" ]; then
124+
if [ -z "${MAVEN_HOME:-}" ] || ! [ -x "$MAVEN_HOME/bin/mvn" ]; then
121125
mvn_archive="$DOWNLOAD_DIR/$(basename "$MAVEN_URL")"
122126
if [ -f "$mvn_archive" ]; then
123127
log "Using cached Maven archive $(basename "$mvn_archive")"
@@ -126,6 +130,10 @@ if ! [ -x "${MAVEN_HOME:-}/bin/mvn" ]; then
126130
curl -fL "$MAVEN_URL" -o "$mvn_archive"
127131
fi
128132
mvn_top=$(tar -tzf "$mvn_archive" 2>/dev/null | head -1 | cut -d/ -f1 || true)
133+
if [ -z "$mvn_top" ]; then
134+
log "Unable to determine extracted directory from $(basename "$mvn_archive")" >&2
135+
exit 1
136+
fi
129137
if [ -n "$mvn_top" ] && [ -d "$DOWNLOAD_DIR/$mvn_top" ]; then
130138
log "Maven already extracted at $DOWNLOAD_DIR/$mvn_top"
131139
else
@@ -201,4 +209,4 @@ set -e
201209
if [ "${skip_archetypes:-0}" -eq 0 ]; then
202210
(cd cn1-maven-archetypes && "$MAVEN_HOME/bin/mvn" -DskipTests -DskipITs=true -Dinvoker.skip=true install) || \
203211
log "Archetype mvn install failed; continuing."
204-
fi
212+
fi

0 commit comments

Comments
 (0)