Skip to content

Commit 434cf19

Browse files
committed
fix(firmware): accept older local firmware filename shapes
Allow target followed by a firmware marker segment (e.g. heltec-v3-firmware-2.7.17.bin, heltec-v3.firmware.bin) in addition to the standard release-style names. The regex now accepts target + delimiter + (version | firmware) as a valid continuation, while still rejecting target-prefix collisions like tbeam vs tbeam-s3-core.
1 parent eafa062 commit 434cf19

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

feature/firmware/src/commonMain/kotlin/org/meshtastic/feature/firmware/FirmwareFileHandler.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ internal fun isValidFirmwareFile(filename: String, target: String, fileExtension
129129

130130
val targetToken = Regex.escape(target)
131131
val extensionToken = Regex.escape(fileExtension)
132-
val targetPattern = Regex("(^|.*[\\-_])$targetToken(([\\-_.]v?\\d).*$extensionToken$|$extensionToken$)")
132+
val targetPattern = Regex("(^|.*[\\-_])$targetToken(([\\-_.](v?\\d|firmware)).*$extensionToken$|$extensionToken$)")
133133
return targetPattern.matches(filename)
134134
}
135135

feature/firmware/src/commonTest/kotlin/org/meshtastic/feature/firmware/IsValidFirmwareFileTest.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,17 @@ class IsValidFirmwareFileTest {
123123
assertTrue(isValidFirmwareFile("firmware-nano-g1-explorer-2.8.0.bin", "nano-g1-explorer", ".bin"))
124124
}
125125

126+
@Test
127+
fun `accepts older local firmware filename shapes`() {
128+
// Older naming where "firmware" appears as a segment after the target.
129+
assertTrue(isValidFirmwareFile("heltec-v3-firmware-2.7.17.bin", "heltec-v3", ".bin"))
130+
assertTrue(isValidFirmwareFile("heltec-v3.firmware.bin", "heltec-v3", ".bin"))
131+
// Standard release names still work.
132+
assertTrue(isValidFirmwareFile("firmware-heltec-v3-2.7.17.bin", "heltec-v3", ".bin"))
133+
assertTrue(isValidFirmwareFile("heltec-v3-2.7.17.bin", "heltec-v3", ".bin"))
134+
assertTrue(isValidFirmwareFile("heltec-v3.bin", "heltec-v3", ".bin"))
135+
}
136+
126137
// ── Edge cases ──────────────────────────────────────────────────────────
127138

128139
@Test

0 commit comments

Comments
 (0)