-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild_release.sh
More file actions
executable file
·96 lines (70 loc) · 2.5 KB
/
build_release.sh
File metadata and controls
executable file
·96 lines (70 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/bin/bash
set -e
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m'
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$SCRIPT_DIR"
if [ -n "$1" ]; then
VERSION="$1"
else
MAJOR=$(grep -oP 'FIRMWARE_VERSION_MAJOR\s+\K\d+' src/Config.h | head -1)
MINOR=$(grep -oP 'FIRMWARE_VERSION_MINOR\s+\K\d+' src/Config.h | head -1)
PATCH=$(grep -oP 'FIRMWARE_VERSION_PATCH\s+\K\d+' src/Config.h | head -1)
VERSION="${MAJOR}.${MINOR}.${PATCH}"
fi
echo -e "${CYAN}Building firmware version: ${VERSION}${NC}"
echo ""
echo -e "${YELLOW}Step 1: Cleaning previous build...${NC}"
pio run --target clean -e xiao_esp32s3 2>/dev/null || true
echo -e "${YELLOW}Step 2: Building release firmware...${NC}"
pio run -e xiao_esp32s3
BUILD_DIR=".pio/build/xiao_esp32s3"
if [ ! -f "$BUILD_DIR/firmware.bin" ]; then
echo -e "${RED}ERROR: Build failed! firmware.bin not found.${NC}"
exit 1
fi
echo -e "${GREEN}Build successful!${NC}"
echo ""
echo -e "${YELLOW}Step 3: Copying binaries to dist/...${NC}"
mkdir -p dist
cp "$BUILD_DIR/bootloader.bin" dist/
cp "$BUILD_DIR/partitions.bin" dist/
cp "$BUILD_DIR/firmware.bin" dist/
echo ""
echo -e "${CYAN}Binary files created:${NC}"
ls -lh dist/*.bin | awk '{print " " $9 ": " $5}'
echo ""
echo -e "${YELLOW}Step 4: Updating version strings...${NC}"
sed -i "s/Flasher v[0-9]\+\.[0-9]\+\.[0-9]\+/Flasher v${VERSION}/g" dist/flash.sh 2>/dev/null || true
sed -i "s/Flasher v[0-9]\+\.[0-9]\+\.[0-9]\+/Flasher v${VERSION}/g" dist/flash.bat 2>/dev/null || true
sed -i "s/Firmware v[0-9]\+\.[0-9]\+\.[0-9]\+/Firmware v${VERSION}/g" dist/README.md 2>/dev/null || true
sed -i "s/Firmware Version\*\*: [0-9]\+\.[0-9]\+\.[0-9]\+/Firmware Version**: ${VERSION}/g" dist/README.md 2>/dev/null || true
echo -e "${YELLOW}Step 5: Creating distribution ZIP...${NC}"
ZIP_NAME="firmware-release-v${VERSION}.zip"
rm -f "$ZIP_NAME"
cd dist
zip -r "../$ZIP_NAME" \
bootloader.bin \
partitions.bin \
firmware.bin \
flash.sh \
flash.bat \
README.md
cd ..
echo -e "${CYAN}Distribution package:${NC}"
echo " $ZIP_NAME"
ls -lh "$ZIP_NAME" | awk '{print " Size: " $5}'
echo ""
echo -e "${CYAN}Contents (NO SOURCE CODE):${NC}"
unzip -l "$ZIP_NAME" | tail -n +4 | head -n -2
echo ""
echo -e "${YELLOW}IMPORTANT:${NC}"
echo " - The ZIP contains ONLY compiled binaries"
echo " - Source code (.cpp, .h) is NOT included"
echo " - Users can flash but cannot extract your code"
echo ""
echo -e "${GREEN}Ready for distribution!${NC}"