Skip to content

Commit 3a4da0b

Browse files
committed
chore: fix release notes preparation script compatibility issue
1 parent 5e81850 commit 3a4da0b

File tree

1 file changed

+52
-27
lines changed

1 file changed

+52
-27
lines changed

scripts/prepare-release-notes.sh

Lines changed: 52 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,16 @@
1111
set -e
1212

1313
SCRIPT_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
1726
RED='\033[0;31m'
@@ -20,26 +29,26 @@ YELLOW='\033[1;33m'
2029
BLUE='\033[0;34m'
2130
NC='\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}"
2433
echo ""
2534

2635
# Path to AndroidCoordinates.kt
2736
COORDINATES_FILE="$PROJECT_ROOT/build-logic/plugins/src/main/kotlin/AndroidCoordinates.kt"
2837

2938
# Extract version name from AndroidCoordinates.kt
3039
if [ ! -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
3342
fi
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

3746
if [ -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
4049
fi
4150

42-
echo -e "${GREEN}Detected version: ${VERSION}${NC}"
51+
$ECHO_CMD "${GREEN}Detected version: ${VERSION}${NC}"
4352
echo ""
4453

4554
# Release notes directory
@@ -51,40 +60,52 @@ MAX_CHARACTERS=500
5160
# Languages to process
5261
LANGUAGES=("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
5567
for 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 ""
84105
done
85106

86107
# Validate character counts
87-
echo -e "${BLUE}=== Validating Character Counts ===${NC}"
108+
$ECHO_CMD "${BLUE}=== Validating Character Counts ===${NC}"
88109
VALIDATION_FAILED=false
89110

90111
for 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
110131
done
111132

112133
if [ "$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
116137
fi
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
121146
echo ""
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
125150
echo ""
126-
echo -e "${BLUE}=== Release Notes Preview ===${NC}"
151+
$ECHO_CMD "${BLUE}=== Release Notes Preview ===${NC}"
127152
for 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

Comments
 (0)