Skip to content

Commit b35b6c2

Browse files
committed
Use Codename One plugin to scaffold Android sample
1 parent d5ee06b commit b35b6c2

File tree

1 file changed

+50
-26
lines changed

1 file changed

+50
-26
lines changed

scripts/build-android-app.sh

Lines changed: 50 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -104,37 +104,29 @@ GROUP_ID="com.codenameone.examples"
104104
ARTIFACT_ID="hello-codenameone"
105105
MAIN_NAME="HelloCodenameOne"
106106

107+
SOURCE_PROJECT="$REPO_ROOT/Samples/SampleProjectTemplate"
108+
if [ ! -d "$SOURCE_PROJECT" ]; then
109+
ba_log "Source project template not found at $SOURCE_PROJECT" >&2
110+
exit 1
111+
fi
112+
ba_log "Using source project template at $SOURCE_PROJECT"
113+
107114
LOCAL_MAVEN_REPO="${LOCAL_MAVEN_REPO:-$HOME/.m2/repository}"
108115
ba_log "Using local Maven repository at $LOCAL_MAVEN_REPO"
109116
mkdir -p "$LOCAL_MAVEN_REPO"
110117
MAVEN_CMD=("$MAVEN_HOME/bin/mvn" -Dmaven.repo.local="$LOCAL_MAVEN_REPO")
111118

112-
ARCHETYPE_PLUGIN_VERSION="3.2.1"
113-
ARCHETYPE_PLUGIN_JAR="$LOCAL_MAVEN_REPO/org/apache/maven/plugins/maven-archetype-plugin/$ARCHETYPE_PLUGIN_VERSION/maven-archetype-plugin-$ARCHETYPE_PLUGIN_VERSION.jar"
114-
115-
if [ ! -f "$ARCHETYPE_PLUGIN_JAR" ]; then
116-
ba_log "Preloading Maven archetype plugin version $ARCHETYPE_PLUGIN_VERSION into $LOCAL_MAVEN_REPO"
117-
if ! xvfb-run -a "${MAVEN_CMD[@]}" -B org.apache.maven.plugins:maven-archetype-plugin:"$ARCHETYPE_PLUGIN_VERSION":help -Ddetail -Dgoal=generate; then
118-
ba_log "Failed to cache maven-archetype-plugin $ARCHETYPE_PLUGIN_VERSION; archetype generation may download dependencies" >&2
119-
fi
120-
else
121-
ba_log "Maven archetype plugin $ARCHETYPE_PLUGIN_VERSION already cached"
122-
fi
123-
124-
ba_log "Generating Codename One application skeleton"
125-
xvfb-run -a "${MAVEN_CMD[@]}" -q --offline archetype:generate \
126-
-DarchetypeArtifactId=cn1app-archetype \
127-
-DarchetypeGroupId=com.codenameone \
128-
-DarchetypeVersion="$CN1_VERSION" \
129-
-DarchetypeCatalog=local \
130-
-DgroupId="$GROUP_ID" \
131-
-DartifactId="$ARTIFACT_ID" \
132-
-Dversion=1.0-SNAPSHOT \
133-
-DmainName="$MAIN_NAME" \
134-
-DinteractiveMode=false \
135-
-Dpackage="$GROUP_ID.$MAIN_NAME" \
136-
-DoutputDirectory="$WORK_DIR" \
137-
"${EXTRA_MVN_ARGS[@]}"
119+
ba_log "Generating Codename One application skeleton via codenameone-maven-plugin"
120+
(
121+
cd "$WORK_DIR"
122+
xvfb-run -a "${MAVEN_CMD[@]}" -q --offline \
123+
com.codenameone:codenameone-maven-plugin:"$CN1_VERSION":generate-app-project \
124+
-DgroupId="$GROUP_ID" \
125+
-DartifactId="$ARTIFACT_ID" \
126+
-Dversion=1.0-SNAPSHOT \
127+
-DsourceProject="$SOURCE_PROJECT" \
128+
"${EXTRA_MVN_ARGS[@]}"
129+
)
138130

139131
APP_DIR="$WORK_DIR/$ARTIFACT_ID"
140132
if [ ! -d "$APP_DIR" ]; then
@@ -158,6 +150,13 @@ if [ -z "$PACKAGE_NAME" ]; then
158150
exit 1
159151
fi
160152

153+
TARGET_MAIN_FILE_DIR="$(dirname "$MAIN_FILE")"
154+
TARGET_MAIN_FILE="$TARGET_MAIN_FILE_DIR/${MAIN_NAME}.java"
155+
if [ "$MAIN_FILE" != "$TARGET_MAIN_FILE" ]; then
156+
mv "$MAIN_FILE" "$TARGET_MAIN_FILE"
157+
MAIN_FILE="$TARGET_MAIN_FILE"
158+
fi
159+
161160
cat > "$MAIN_FILE" <<HELLOEOF
162161
package $PACKAGE_NAME;
163162
@@ -194,6 +193,31 @@ public class ${MAIN_NAME} {
194193
HELLOEOF
195194

196195
SETTINGS_FILE="$APP_DIR/common/codenameone_settings.properties"
196+
ba_log "Setting codename1.mainName to $MAIN_NAME"
197+
if [ -f "$SETTINGS_FILE" ]; then
198+
if grep -q '^codename1.mainName=' "$SETTINGS_FILE"; then
199+
python3 - "$SETTINGS_FILE" "$MAIN_NAME" <<'PY'
200+
import pathlib
201+
import re
202+
import sys
203+
204+
path = pathlib.Path(sys.argv[1])
205+
main_name = sys.argv[2]
206+
text = path.read_text()
207+
replacement = f'codename1.mainName={main_name}'
208+
if re.search(r'^codename1\.mainName=', text, flags=re.MULTILINE):
209+
text = re.sub(r'^codename1\.mainName=.*$', replacement, text, flags=re.MULTILINE)
210+
else:
211+
text = text + ('\n' if not text.endswith('\n') else '') + replacement + '\n'
212+
path.write_text(text if text.endswith('\n') else text + '\n')
213+
PY
214+
else
215+
printf '\ncodename1.mainName=%s\n' "$MAIN_NAME" >> "$SETTINGS_FILE"
216+
fi
217+
else
218+
printf 'codename1.mainName=%s\n' "$MAIN_NAME" > "$SETTINGS_FILE"
219+
fi
220+
197221
ba_log "Disabling Codename One CSS compilation to avoid headless failures"
198222
if [ -f "$SETTINGS_FILE" ]; then
199223
if grep -q '^codename1.cssTheme=' "$SETTINGS_FILE"; then

0 commit comments

Comments
 (0)