11#! /usr/bin/env bash
2+ # ##
23# Prepare Codename One workspace by installing Maven, provisioning JDK 8 and JDK 17,
34# building core modules, and installing Maven archetypes.
5+ # ##
46set -euo pipefail
7+
8+ log () {
9+ echo " [setup-workspace] $1 "
10+ }
11+
512ROOT=" $( cd " $( dirname " $0 " ) /.." && pwd) "
613TOOLS=" $ROOT /tools"
714mkdir -p " $TOOLS "
@@ -10,13 +17,14 @@ JAVA_HOME="${JAVA_HOME:-}"
1017JAVA_HOME_17=" ${JAVA_HOME_17:- } "
1118MAVEN_HOME=" ${MAVEN_HOME:- } "
1219
20+ log " Detecting host platform"
1321os_name=$( uname -s)
1422arch_name=$( uname -m)
1523case " $os_name " in
1624 Linux) os=" linux" ;;
1725 Darwin) os=" mac" ;;
1826 * ) echo " Unsupported OS: $os_name " >&2 ; exit 1 ;;
19- esac
27+ esac
2028case " $arch_name " in
2129 x86_64|amd64) arch=" x64" ;;
2230 arm64|aarch64) arch=" aarch64" ;;
@@ -37,7 +45,7 @@ MAVEN_URL="https://archive.apache.org/dist/maven/maven-3/3.9.6/binaries/apache-m
3745install_jdk () {
3846 local url=" $1 " dest_var=" $2 "
3947 local tmp=" $TOOLS /jdk.tgz"
40- echo " Downloading JDK from $url "
48+ log " Downloading JDK from $url "
4149 curl -fL " $url " -o " $tmp "
4250 local top
4351 top=$( tar -tzf " $tmp " 2> /dev/null | head -1 | cut -d/ -f1 || true)
@@ -50,25 +58,35 @@ install_jdk() {
5058 eval " $dest_var =\" $home \" "
5159}
5260
61+ log " Ensuring JDK 8 is available"
5362if [ ! -x " ${JAVA_HOME:- } /bin/java" ] || ! " ${JAVA_HOME:- } /bin/java" -version 2>&1 | grep -q ' 1\.8' ; then
54- echo " Provisioning JDK 8 (this may take a while)..."
63+ log " Provisioning JDK 8 (this may take a while)..."
5564 install_jdk " $JDK8_URL " JAVA_HOME
65+ else
66+ log " Using existing JDK 8 at $JAVA_HOME "
5667fi
5768
69+ log " Ensuring JDK 17 is available"
5870if [ ! -x " ${JAVA_HOME_17:- } /bin/java" ] || ! " ${JAVA_HOME_17:- } /bin/java" -version 2>&1 | grep -q ' 17\.0' ; then
59- echo " Provisioning JDK 17 (this may take a while)..."
71+ log " Provisioning JDK 17 (this may take a while)..."
6072 install_jdk " $JDK17_URL " JAVA_HOME_17
73+ else
74+ log " Using existing JDK 17 at $JAVA_HOME_17 "
6175fi
6276
77+ log " Ensuring Maven is available"
6378if ! [ -x " ${MAVEN_HOME:- } /bin/mvn" ]; then
64- echo " Downloading Maven from $MAVEN_URL "
6579 tmp=" $TOOLS /maven.tgz"
80+ log " Downloading Maven from $MAVEN_URL "
6681 curl -fL " $MAVEN_URL " -o " $tmp "
6782 tar -xzf " $tmp " -C " $TOOLS "
6883 rm " $tmp "
6984 MAVEN_HOME=" $TOOLS /apache-maven-3.9.6"
85+ else
86+ log " Using existing Maven at $MAVEN_HOME "
7087fi
7188
89+ log " Writing environment to $TOOLS /env.sh"
7290cat > " $TOOLS /env.sh" << ENV
7391export JAVA_HOME="$JAVA_HOME "
7492export JAVA_HOME_17="$JAVA_HOME_17 "
7896
7997source " $TOOLS /env.sh"
8098
81- " $JAVA_HOME /bin/java" -version
82- " $JAVA_HOME_17 /bin/java" -version
83- " $MAVEN_HOME /bin/mvn" -version
99+ log " JDK 8 version: " ; " $JAVA_HOME /bin/java" -version
100+ log " JDK 17 version: " ; " $JAVA_HOME_17 /bin/java" -version
101+ log " Maven version: " ; " $MAVEN_HOME /bin/mvn" -version
84102
85103PATH=" $JAVA_HOME /bin:$MAVEN_HOME /bin:$PATH "
86- (" $MAVEN_HOME /bin/mvn" -q -f maven/pom.xml install " $@ " )
104+
105+ log " Building Codename One core modules"
106+ " $MAVEN_HOME /bin/mvn" -f maven/pom.xml -DskipTests install " $@ "
87107
88108BUILD_CLIENT=" $HOME /.codenameone/CodeNameOneBuildClient.jar"
109+ log " Ensuring CodeNameOneBuildClient.jar is installed"
89110if [ ! -f " $BUILD_CLIENT " ]; then
90- if ! " $MAVEN_HOME /bin/mvn" -q -f maven/pom.xml cn1:install-codenameone " $@ " ; then
111+ if ! " $MAVEN_HOME /bin/mvn" -f maven/pom.xml cn1:install-codenameone " $@ " ; then
112+ log " Falling back to copying CodeNameOneBuildClient.jar"
91113 mkdir -p " $( dirname " $BUILD_CLIENT " ) "
92114 cp maven/CodeNameOneBuildClient.jar " $BUILD_CLIENT " || true
93115 fi
94116fi
95117
118+ log " Installing cn1-maven-archetypes"
96119if [ ! -d cn1-maven-archetypes ]; then
97120 git clone https://github.com/shannah/cn1-maven-archetypes
98121fi
99- (cd cn1-maven-archetypes && " $MAVEN_HOME /bin/mvn" -q - DskipTests -DskipITs install)
122+ (cd cn1-maven-archetypes && " $MAVEN_HOME /bin/mvn" -DskipTests -Dinvoker.skip=true install)
0 commit comments