|
| 1 | +#!/bin/bash |
| 2 | +SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )" |
| 3 | +set -e |
| 4 | +source "$SCRIPTPATH/inc/env.sh" |
| 5 | + |
| 6 | +WORKDIR="$SCRIPTPATH/build/initializr-roundtrip" |
| 7 | +SOURCE_WORKDIR="$WORKDIR/source-work" |
| 8 | +GENERATED_WORKDIR="$WORKDIR/generated-work" |
| 9 | +ARTIFACT_ID="initializr-roundtrip" |
| 10 | +SOURCE_PROJECT="$SOURCE_WORKDIR/$ARTIFACT_ID" |
| 11 | +GENERATED_PROJECT="$GENERATED_WORKDIR/$ARTIFACT_ID" |
| 12 | +APP_NAME="RoundTripInitializrApp" |
| 13 | +PACKAGE_NAME="com.acme.initializr.roundtrip" |
| 14 | + |
| 15 | +rm -rf "$WORKDIR" |
| 16 | +mkdir -p "$WORKDIR" |
| 17 | + |
| 18 | +mkdir -p "$SOURCE_WORKDIR" "$GENERATED_WORKDIR" |
| 19 | + |
| 20 | +cd "$SOURCE_WORKDIR" |
| 21 | + |
| 22 | +mvn archetype:generate \ |
| 23 | + -DarchetypeArtifactId=cn1app-archetype \ |
| 24 | + -DarchetypeGroupId=com.codenameone \ |
| 25 | + -DarchetypeVersion="$CN1_VERSION" \ |
| 26 | + -DartifactId="$ARTIFACT_ID" \ |
| 27 | + -DgroupId="$PACKAGE_NAME" \ |
| 28 | + -Dversion=1.0-SNAPSHOT \ |
| 29 | + -DmainName="$APP_NAME" \ |
| 30 | + -DinteractiveMode=false |
| 31 | + |
| 32 | +cat > "$SOURCE_PROJECT/generate-app-project.rpf" <<EOF |
| 33 | +template.type=maven |
| 34 | +template.mainName=$APP_NAME |
| 35 | +template.packageName=$PACKAGE_NAME |
| 36 | +EOF |
| 37 | + |
| 38 | +cd "$GENERATED_WORKDIR" |
| 39 | +mvn "com.codenameone:codenameone-maven-plugin:${CN1_VERSION}:generate-app-project" \ |
| 40 | + -DarchetypeGroupId=com.codenameone \ |
| 41 | + -DarchetypeArtifactId=cn1app-archetype \ |
| 42 | + -DarchetypeVersion="${CN1_VERSION}" \ |
| 43 | + -DartifactId="${ARTIFACT_ID}" \ |
| 44 | + -DgroupId="${PACKAGE_NAME}" \ |
| 45 | + -Dversion=1.0-SNAPSHOT \ |
| 46 | + -DmainName="${APP_NAME}" \ |
| 47 | + -DpackageName="${PACKAGE_NAME}" \ |
| 48 | + -DinteractiveMode=false \ |
| 49 | + -DsourceProject="$SOURCE_PROJECT" |
| 50 | + |
| 51 | +if [ ! -d "$GENERATED_PROJECT" ]; then |
| 52 | + echo "Generated project missing at $GENERATED_PROJECT" |
| 53 | + exit 1 |
| 54 | +fi |
| 55 | + |
| 56 | +normalize_project() { |
| 57 | + PROJECT_DIR="$1" |
| 58 | + while read -r SETTINGS_FILE; do |
| 59 | + NORMALIZED_FILE="$SETTINGS_FILE.normalized" |
| 60 | + grep -v '^[[:space:]]*#' "$SETTINGS_FILE" | sort > "$NORMALIZED_FILE" |
| 61 | + if [ ! -s "$NORMALIZED_FILE" ]; then |
| 62 | + echo "Normalization produced an empty codenameone_settings.properties file: $SETTINGS_FILE (expected non-comment property entries)." |
| 63 | + rm -f "$NORMALIZED_FILE" |
| 64 | + exit 1 |
| 65 | + fi |
| 66 | + mv "$NORMALIZED_FILE" "$SETTINGS_FILE" |
| 67 | + done < <(find "$PROJECT_DIR" -type f -name "codenameone_settings.properties") |
| 68 | +} |
| 69 | + |
| 70 | +normalize_project "$SOURCE_PROJECT" |
| 71 | +normalize_project "$GENERATED_PROJECT" |
| 72 | + |
| 73 | +IGNORES_FILE="$WORKDIR/roundtrip.ignores" |
| 74 | +cat > "$IGNORES_FILE" <<EOF |
| 75 | +generate-app-project.rpf |
| 76 | +EOF |
| 77 | + |
| 78 | +DIFF_OUT="$WORKDIR/roundtrip.diff" |
| 79 | +set +e |
| 80 | +diff -ruN -x target -X "$IGNORES_FILE" "$SOURCE_PROJECT" "$GENERATED_PROJECT" > "$DIFF_OUT" |
| 81 | +DIFF_STATUS=$? |
| 82 | +set -e |
| 83 | + |
| 84 | +if [ "$DIFF_STATUS" -ne 0 ]; then |
| 85 | + echo "Initializr round-trip comparison failed. Unexpected differences found:" |
| 86 | + cat "$DIFF_OUT" |
| 87 | + exit 1 |
| 88 | +fi |
| 89 | + |
| 90 | +echo "Initializr round-trip comparison passed." |
0 commit comments