1111set -e
1212
1313SCRIPT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " && pwd) "
14- PROJECT_ROOT=" $( cd " $SCRIPT_DIR /../.." && pwd) "
14+ PROJECT_ROOT=" $( cd " $SCRIPT_DIR /.." && pwd) "
15+
16+ # Detect OS and set echo command accordingly
17+ if [[ " $OSTYPE " == " darwin" * ]]; then
18+ # macOS
19+ ECHO_CMD=" echo"
20+ else
21+ # Linux and others
22+ ECHO_CMD=" echo -e"
23+ fi
1524
1625# Colors for output
1726RED=' \033[0;31m'
@@ -20,26 +29,26 @@ YELLOW='\033[1;33m'
2029BLUE=' \033[0;34m'
2130NC=' \033[0m' # No Color
2231
23- echo -e " ${BLUE} === Wire Android Release Notes Preparation ===${NC} "
32+ $ECHO_CMD " ${BLUE} === Wire Android Release Notes Preparation ===${NC} "
2433echo " "
2534
2635# Path to AndroidCoordinates.kt
2736COORDINATES_FILE=" $PROJECT_ROOT /build-logic/plugins/src/main/kotlin/AndroidCoordinates.kt"
2837
2938# Extract version name from AndroidCoordinates.kt
3039if [ ! -f " $COORDINATES_FILE " ]; then
31- echo -e " ${RED} Error: AndroidCoordinates.kt not found at $COORDINATES_FILE ${NC} "
40+ $ECHO_CMD " ${RED} Error: AndroidCoordinates.kt not found at $COORDINATES_FILE ${NC} "
3241 exit 1
3342fi
3443
35- VERSION=$( awk ' /^[[:space:]] *const[[:space:]] +val[[:space:]] +versionName[[:space:]]*=[[:space:]]*"/ { match($0, / "([^"]+)"/, arr); print arr[1] } ' " $COORDINATES_FILE " )
44+ VERSION=$( grep -E ' ^\s *const\s +val\s +versionName\s*=\s*" ' " $COORDINATES_FILE " | sed -E ' s/.* "([^"]+)".*/\1/ ' )
3645
3746if [ -z " $VERSION " ]; then
38- echo -e " ${RED} Error: Could not extract version from AndroidCoordinates.kt${NC} "
47+ $ECHO_CMD " ${RED} Error: Could not extract version from AndroidCoordinates.kt${NC} "
3948 exit 1
4049fi
4150
42- echo -e " ${GREEN} Detected version: ${VERSION}${NC} "
51+ $ECHO_CMD " ${GREEN} Detected version: ${VERSION}${NC} "
4352echo " "
4453
4554# Release notes directory
@@ -51,40 +60,52 @@ MAX_CHARACTERS=500
5160# Languages to process
5261LANGUAGES=(" en-US" " de-DE" )
5362
63+ # Track if we're using version-specific release notes
64+ USING_VERSION_SPECIFIC=true
65+
5466# Process each language
5567for LANG in " ${LANGUAGES[@]} " ; do
5668 LANG_DIR=" $RELEASE_NOTES_DIR /$LANG "
5769 VERSION_FILE=" $LANG_DIR /${VERSION} .txt"
5870 DEFAULT_FILE=" $LANG_DIR /default.txt"
5971
60- echo -e " ${BLUE} Processing $LANG ...${NC} "
72+ $ECHO_CMD " ${BLUE} Processing $LANG ...${NC} "
6173
6274 if [ ! -d " $LANG_DIR " ]; then
63- echo -e " ${YELLOW} Warning: Language directory not found: $LANG_DIR ${NC} "
64- echo -e " ${YELLOW} Skipping $LANG ${NC} "
75+ $ECHO_CMD " ${YELLOW} Warning: Language directory not found: $LANG_DIR ${NC} "
76+ $ECHO_CMD " ${YELLOW} Skipping $LANG ${NC} "
6577 echo " "
6678 continue
6779 fi
6880
6981 if [ -f " $VERSION_FILE " ]; then
70- echo -e " ${GREEN} ✓ Found version-specific release notes: ${VERSION} .txt${NC} "
82+ $ECHO_CMD " ${GREEN} ✓ Found version-specific release notes: ${VERSION} .txt${NC} "
7183
7284 # Copy version-specific file to default.txt
7385 cp " $VERSION_FILE " " $DEFAULT_FILE "
74- echo -e " ${GREEN} Copied ${VERSION} .txt to default.txt${NC} "
86+ $ECHO_CMD " ${GREEN} Copied ${VERSION} .txt to default.txt${NC} "
7587
7688 else
77- echo -e " ${RED} ✗ Error: Version-specific release notes not found: ${VERSION} .txt${NC} "
78- echo -e " ${RED} Release notes for version ${VERSION} must be created before deployment${NC} "
79- echo -e " ${RED} Expected file: $VERSION_FILE ${NC} "
80- exit 1
89+ $ECHO_CMD " ${YELLOW} ⚠ Warning: Version-specific release notes not found: ${VERSION} .txt${NC} "
90+ USING_VERSION_SPECIFIC=false
91+
92+ if [ -f " $DEFAULT_FILE " ]; then
93+ $ECHO_CMD " ${YELLOW} Using existing default.txt as fallback${NC} "
94+ $ECHO_CMD " ${YELLOW} Expected file: $VERSION_FILE ${NC} "
95+ else
96+ $ECHO_CMD " ${RED} ✗ Error: Neither version-specific nor default release notes found${NC} "
97+ $ECHO_CMD " ${RED} Expected files:${NC} "
98+ $ECHO_CMD " ${RED} - $VERSION_FILE ${NC} "
99+ $ECHO_CMD " ${RED} - $DEFAULT_FILE ${NC} "
100+ exit 1
101+ fi
81102 fi
82103
83104 echo " "
84105done
85106
86107# Validate character counts
87- echo -e " ${BLUE} === Validating Character Counts ===${NC} "
108+ $ECHO_CMD " ${BLUE} === Validating Character Counts ===${NC} "
88109VALIDATION_FAILED=false
89110
90111for LANG in " ${LANGUAGES[@]} " ; do
@@ -93,42 +114,46 @@ for LANG in "${LANGUAGES[@]}"; do
93114 if [ -f " $DEFAULT_FILE " ]; then
94115 CHAR_COUNT=$( python3 -c " import sys; print(len(sys.stdin.read()))" < " $DEFAULT_FILE " )
95116
96- echo -e " ${BLUE} [$LANG ]${NC} Character count: ${CHAR_COUNT} /${MAX_CHARACTERS} "
117+ $ECHO_CMD " ${BLUE} [$LANG ]${NC} Character count: ${CHAR_COUNT} /${MAX_CHARACTERS} "
97118
98119 if [ " $CHAR_COUNT " -gt " $MAX_CHARACTERS " ]; then
99120 OVERFLOW=$(( CHAR_COUNT - MAX_CHARACTERS))
100- echo -e " ${RED} ✗ FAILED: Exceeds limit by ${OVERFLOW} characters${NC} "
121+ $ECHO_CMD " ${RED} ✗ FAILED: Exceeds limit by ${OVERFLOW} characters${NC} "
101122 VALIDATION_FAILED=true
102123 elif [ " $CHAR_COUNT " -eq " $MAX_CHARACTERS " ]; then
103- echo -e " ${YELLOW} ⚠ WARNING: Exactly at character limit${NC} "
124+ $ECHO_CMD " ${YELLOW} ⚠ WARNING: Exactly at character limit${NC} "
104125 else
105126 REMAINING=$(( MAX_CHARACTERS - CHAR_COUNT))
106- echo -e " ${GREEN} ✓ PASSED: ${REMAINING} characters remaining${NC} "
127+ $ECHO_CMD " ${GREEN} ✓ PASSED: ${REMAINING} characters remaining${NC} "
107128 fi
108129 echo " "
109130 fi
110131done
111132
112133if [ " $VALIDATION_FAILED " = true ]; then
113- echo -e " ${RED} Error: One or more release notes exceed the Play Store ${MAX_CHARACTERS} character limit${NC} "
114- echo -e " ${RED} Please reduce the content and try again${NC} "
134+ $ECHO_CMD " ${RED} Error: One or more release notes exceed the Play Store ${MAX_CHARACTERS} character limit${NC} "
135+ $ECHO_CMD " ${RED} Please reduce the content and try again${NC} "
115136 exit 1
116137fi
117138
118139# Summary
119- echo -e " ${BLUE} === Summary ===${NC} "
120- echo -e " ${GREEN} ✓ Using version-specific release notes for version ${VERSION}${NC} "
140+ $ECHO_CMD " ${BLUE} === Summary ===${NC} "
141+ if [ " $USING_VERSION_SPECIFIC " = true ]; then
142+ $ECHO_CMD " ${GREEN} ✓ Using version-specific release notes for version ${VERSION}${NC} "
143+ else
144+ $ECHO_CMD " ${YELLOW} ⚠ Using fallback release notes (version-specific notes for ${VERSION} not found)${NC} "
145+ fi
121146echo " "
122- echo -e " ${GREEN} Release notes preparation completed successfully!${NC} "
147+ $ECHO_CMD " ${GREEN} Release notes preparation completed successfully!${NC} "
123148
124149# Display the release notes that will be used
125150echo " "
126- echo -e " ${BLUE} === Release Notes Preview ===${NC} "
151+ $ECHO_CMD " ${BLUE} === Release Notes Preview ===${NC} "
127152for LANG in " ${LANGUAGES[@]} " ; do
128153 DEFAULT_FILE=" $RELEASE_NOTES_DIR /$LANG /default.txt"
129154 if [ -f " $DEFAULT_FILE " ]; then
130155 echo " "
131- echo -e " ${BLUE} [$LANG ]${NC} "
156+ $ECHO_CMD " ${BLUE} [$LANG ]${NC} "
132157 echo " ---"
133158 cat " $DEFAULT_FILE "
134159 echo " ---"
0 commit comments