Skip to content

Commit 3346c21

Browse files
roensfifieldt
authored andcommitted
Clean up install & update shell scripts
Fixed quoting of the `FILENAME` variable to work when the path of the passed argument contains a space. Also fixed syntactical issues called out by `shellcheck` in multi-condition `if` statements. Also normalized indentation chars (was mix of tabs & spaces) and trailing whitespace.
1 parent baefda2 commit 3346c21

File tree

2 files changed

+145
-145
lines changed

2 files changed

+145
-145
lines changed

bin/device-install.sh

Lines changed: 135 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -32,47 +32,47 @@ BIGDB_16MB=(
3232
"ESP32-S3-Pico"
3333
"m5stack-cores3"
3434
"station-g2"
35-
"t-eth-elite"
36-
"t-watch-s3"
35+
"t-eth-elite"
36+
"t-watch-s3"
3737
)
3838
S3_VARIANTS=(
39-
"s3"
40-
"-v3"
41-
"t-deck"
42-
"wireless-paper"
43-
"wireless-tracker"
44-
"station-g2"
45-
"unphone"
46-
"t-eth-elite"
47-
"mesh-tab"
48-
"dreamcatcher"
49-
"ESP32-S3-Pico"
50-
"seeed-sensecap-indicator"
51-
"heltec_capsule_sensor_v3"
52-
"vision-master"
53-
"icarus"
54-
"tracksenger"
55-
"elecrow-adv"
39+
"s3"
40+
"-v3"
41+
"t-deck"
42+
"wireless-paper"
43+
"wireless-tracker"
44+
"station-g2"
45+
"unphone"
46+
"t-eth-elite"
47+
"mesh-tab"
48+
"dreamcatcher"
49+
"ESP32-S3-Pico"
50+
"seeed-sensecap-indicator"
51+
"heltec_capsule_sensor_v3"
52+
"vision-master"
53+
"icarus"
54+
"tracksenger"
55+
"elecrow-adv"
5656
)
5757

5858
# Determine the correct esptool command to use
5959
if "$PYTHON" -m esptool version >/dev/null 2>&1; then
60-
ESPTOOL_CMD="$PYTHON -m esptool"
60+
ESPTOOL_CMD="$PYTHON -m esptool"
6161
elif command -v esptool >/dev/null 2>&1; then
62-
ESPTOOL_CMD="esptool"
62+
ESPTOOL_CMD="esptool"
6363
elif command -v esptool.py >/dev/null 2>&1; then
64-
ESPTOOL_CMD="esptool.py"
64+
ESPTOOL_CMD="esptool.py"
6565
else
66-
echo "Error: esptool not found"
67-
exit 1
66+
echo "Error: esptool not found"
67+
exit 1
6868
fi
6969

7070
set -e
7171

7272
# Usage info
7373
show_help() {
74-
cat <<EOF
75-
Usage: $(basename $0) [-h] [-p ESPTOOL_PORT] [-P PYTHON] [-f FILENAME] [--web]
74+
cat <<EOF
75+
Usage: $(basename "$0") [-h] [-p ESPTOOL_PORT] [-P PYTHON] [-f FILENAME] [--web]
7676
Flash image file to device, but first erasing and writing system information.
7777
7878
-h Display this help and exit.
@@ -85,132 +85,132 @@ EOF
8585
}
8686
# Parse arguments using a single while loop
8787
while [ $# -gt 0 ]; do
88-
case "$1" in
89-
-h | --help)
90-
show_help
91-
exit 0
92-
;;
93-
-p)
94-
ESPTOOL_CMD="$ESPTOOL_CMD --port $2"
95-
shift
96-
;;
97-
-P)
98-
PYTHON="$2"
99-
shift
100-
;;
101-
-f)
102-
FILENAME="$2"
103-
shift
104-
;;
105-
--web)
106-
WEB_APP=true
107-
;;
108-
--) # Stop parsing options
109-
shift
110-
break
111-
;;
112-
*)
113-
echo "Unknown argument: $1" >&2
114-
exit 1
115-
;;
116-
esac
117-
shift # Move to the next argument
88+
case "$1" in
89+
-h | --help)
90+
show_help
91+
exit 0
92+
;;
93+
-p)
94+
ESPTOOL_CMD="$ESPTOOL_CMD --port $2"
95+
shift
96+
;;
97+
-P)
98+
PYTHON="$2"
99+
shift
100+
;;
101+
-f)
102+
FILENAME="$2"
103+
shift
104+
;;
105+
--web)
106+
WEB_APP=true
107+
;;
108+
--) # Stop parsing options
109+
shift
110+
break
111+
;;
112+
*)
113+
echo "Unknown argument: $1" >&2
114+
exit 1
115+
;;
116+
esac
117+
shift # Move to the next argument
118118
done
119119

120-
[ -z "$FILENAME" -a -n "$1" ] && {
121-
FILENAME=$1
122-
shift
120+
[ -z "$FILENAME" ] && [ -n "$1" ] && {
121+
FILENAME="$1"
122+
shift
123123
}
124124

125-
if [[ $FILENAME != firmware-* ]]; then
125+
if [[ "$FILENAME" != firmware-* ]]; then
126126
echo "Filename must be a firmware-* file."
127127
exit 1
128128
fi
129129

130130
# Check if FILENAME contains "-tft-" and prevent web/mui comingling.
131-
if [[ ${FILENAME//-tft-/} != "$FILENAME" ]]; then
132-
TFT_BUILD=true
133-
if [[ $WEB_APP == true ]] && [[ $TFT_BUILD == true ]]; then
134-
echo "Cannot enable WebUI (--web) and MUI."
135-
exit 1
136-
fi
131+
if [[ "${FILENAME//-tft-/}" != "$FILENAME" ]]; then
132+
TFT_BUILD=true
133+
if [[ $WEB_APP == true ]] && [[ $TFT_BUILD == true ]]; then
134+
echo "Cannot enable WebUI (--web) and MUI."
135+
exit 1
136+
fi
137137
fi
138138

139139
# Extract BASENAME from %FILENAME% for later use.
140140
BASENAME="${FILENAME/firmware-/}"
141141

142142
if [ -f "${FILENAME}" ] && [ -n "${FILENAME##*"update"*}" ]; then
143-
# Default littlefs* offset (--web).
144-
OFFSET=0x300000
145-
146-
# Default OTA Offset
147-
OTA_OFFSET=0x260000
148-
149-
# littlefs* offset for BigDB 8mb and OTA OFFSET.
150-
for variant in "${BIGDB_8MB[@]}"; do
151-
if [ -z "${FILENAME##*"$variant"*}" ]; then
152-
OFFSET=0x670000
153-
OTA_OFFSET=0x340000
154-
fi
155-
done
156-
157-
# littlefs* offset for BigDB 16mb and OTA OFFSET.
158-
for variant in "${BIGDB_16MB[@]}"; do
159-
if [ -z "${FILENAME##*"$variant"*}" ]; then
160-
OFFSET=0xc90000
161-
OTA_OFFSET=0x650000
162-
fi
163-
done
164-
165-
# Account for S3 board's different OTA partition
166-
# FIXME: Use PlatformIO info to determine MCU type, this is unmaintainable
167-
for variant in "${S3_VARIANTS[@]}"; do
168-
if [ -z "${FILENAME##*"$variant"*}" ]; then
169-
MCU="esp32s3"
170-
fi
171-
done
172-
173-
if [ "$MCU" != "esp32s3" ]; then
174-
if [ -n "${FILENAME##*"esp32c3"*}" ]; then
175-
OTAFILE=bleota.bin
176-
else
177-
OTAFILE=bleota-c3.bin
178-
fi
179-
else
180-
OTAFILE=bleota-s3.bin
181-
fi
182-
183-
# Check if WEB_APP (--web) is enabled and add "littlefswebui-" to BASENAME else "littlefs-".
184-
if [ "$WEB_APP" = true ]; then
185-
SPIFFSFILE=littlefswebui-${BASENAME}
186-
else
187-
SPIFFSFILE=littlefs-${BASENAME}
188-
fi
189-
190-
if [[ ! -f $FILENAME ]]; then
191-
echo "Error: file ${FILENAME} wasn't found. Terminating."
192-
exit 1
193-
fi
194-
if [[ ! -f $OTAFILE ]]; then
195-
echo "Error: file ${OTAFILE} wasn't found. Terminating."
196-
exit 1
197-
fi
198-
if [[ ! -f $SPIFFSFILE ]]; then
199-
echo "Error: file ${SPIFFSFILE} wasn't found. Terminating."
200-
exit 1
201-
fi
202-
203-
echo "Trying to flash ${FILENAME}, but first erasing and writing system information"
204-
$ESPTOOL_CMD erase_flash
205-
$ESPTOOL_CMD write_flash 0x00 "${FILENAME}"
206-
echo "Trying to flash ${OTAFILE} at offset ${OTA_OFFSET}"
207-
$ESPTOOL_CMD write_flash $OTA_OFFSET "${OTAFILE}"
208-
echo "Trying to flash ${SPIFFSFILE}, at offset ${OFFSET}"
209-
$ESPTOOL_CMD write_flash $OFFSET "${SPIFFSFILE}"
143+
# Default littlefs* offset (--web).
144+
OFFSET=0x300000
145+
146+
# Default OTA Offset
147+
OTA_OFFSET=0x260000
148+
149+
# littlefs* offset for BigDB 8mb and OTA OFFSET.
150+
for variant in "${BIGDB_8MB[@]}"; do
151+
if [ -z "${FILENAME##*"$variant"*}" ]; then
152+
OFFSET=0x670000
153+
OTA_OFFSET=0x340000
154+
fi
155+
done
156+
157+
# littlefs* offset for BigDB 16mb and OTA OFFSET.
158+
for variant in "${BIGDB_16MB[@]}"; do
159+
if [ -z "${FILENAME##*"$variant"*}" ]; then
160+
OFFSET=0xc90000
161+
OTA_OFFSET=0x650000
162+
fi
163+
done
164+
165+
# Account for S3 board's different OTA partition
166+
# FIXME: Use PlatformIO info to determine MCU type, this is unmaintainable
167+
for variant in "${S3_VARIANTS[@]}"; do
168+
if [ -z "${FILENAME##*"$variant"*}" ]; then
169+
MCU="esp32s3"
170+
fi
171+
done
172+
173+
if [ "$MCU" != "esp32s3" ]; then
174+
if [ -n "${FILENAME##*"esp32c3"*}" ]; then
175+
OTAFILE=bleota.bin
176+
else
177+
OTAFILE=bleota-c3.bin
178+
fi
179+
else
180+
OTAFILE=bleota-s3.bin
181+
fi
182+
183+
# Check if WEB_APP (--web) is enabled and add "littlefswebui-" to BASENAME else "littlefs-".
184+
if [ "$WEB_APP" = true ]; then
185+
SPIFFSFILE=littlefswebui-${BASENAME}
186+
else
187+
SPIFFSFILE=littlefs-${BASENAME}
188+
fi
189+
190+
if [[ ! -f "$FILENAME" ]]; then
191+
echo "Error: file ${FILENAME} wasn't found. Terminating."
192+
exit 1
193+
fi
194+
if [[ ! -f "$OTAFILE" ]]; then
195+
echo "Error: file ${OTAFILE} wasn't found. Terminating."
196+
exit 1
197+
fi
198+
if [[ ! -f "$SPIFFSFILE" ]]; then
199+
echo "Error: file ${SPIFFSFILE} wasn't found. Terminating."
200+
exit 1
201+
fi
202+
203+
echo "Trying to flash ${FILENAME}, but first erasing and writing system information"
204+
$ESPTOOL_CMD erase_flash
205+
$ESPTOOL_CMD write_flash 0x00 "${FILENAME}"
206+
echo "Trying to flash ${OTAFILE} at offset ${OTA_OFFSET}"
207+
$ESPTOOL_CMD write_flash $OTA_OFFSET "${OTAFILE}"
208+
echo "Trying to flash ${SPIFFSFILE}, at offset ${OFFSET}"
209+
$ESPTOOL_CMD write_flash $OFFSET "${SPIFFSFILE}"
210210

211211
else
212-
show_help
213-
echo "Invalid file: ${FILENAME}"
212+
show_help
213+
echo "Invalid file: ${FILENAME}"
214214
fi
215215

216216
exit 0

bin/device-update.sh

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@ fi
1717
# Usage info
1818
show_help() {
1919
cat << EOF
20-
Usage: $(basename $0) [-h] [-p ESPTOOL_PORT] [-P PYTHON] [-f FILENAME|FILENAME]
20+
Usage: $(basename "$0") [-h] [-p ESPTOOL_PORT] [-P PYTHON] [-f FILENAME|FILENAME]
2121
Flash image file to device, leave existing system intact."
2222
2323
-h Display this help and exit
2424
-p ESPTOOL_PORT Set the environment variable for ESPTOOL_PORT. If not set, ESPTOOL iterates all ports (Dangerous).
2525
-P PYTHON Specify alternate python interpreter to use to invoke esptool. (Default: "$PYTHON")
2626
-f FILENAME The *update.bin file to flash. Custom to your device type.
27-
27+
2828
EOF
2929
}
3030

@@ -36,31 +36,31 @@ while getopts ":hp:P:f:" opt; do
3636
exit 0
3737
;;
3838
p) ESPTOOL_CMD="$ESPTOOL_CMD --port ${OPTARG}"
39-
;;
39+
;;
4040
P) PYTHON=${OPTARG}
4141
;;
4242
f) FILENAME=${OPTARG}
4343
;;
4444
*)
45-
echo "Invalid flag."
45+
echo "Invalid flag."
4646
show_help >&2
4747
exit 1
4848
;;
4949
esac
5050
done
5151
shift "$((OPTIND-1))"
5252

53-
[ -z "$FILENAME" -a -n "$1" ] && {
54-
FILENAME=$1
53+
[ -z "$FILENAME" ] && [ -n "$1" ] && {
54+
FILENAME="$1"
5555
shift
5656
}
5757

5858
if [ -f "${FILENAME}" ] && [ -z "${FILENAME##*"update"*}" ]; then
59-
printf "Trying to flash update ${FILENAME}"
60-
$ESPTOOL_CMD --baud 115200 write_flash 0x10000 ${FILENAME}
59+
echo "Trying to flash update ${FILENAME}"
60+
$ESPTOOL_CMD --baud 115200 write_flash 0x10000 "${FILENAME}"
6161
else
62-
show_help
63-
echo "Invalid file: ${FILENAME}"
62+
show_help
63+
echo "Invalid file: ${FILENAME}"
6464
fi
6565

6666
exit 0

0 commit comments

Comments
 (0)