diff --git a/src/ghw_process_ota_files.ts b/src/ghw_process_ota_files.ts index 857b8c0..f4b26df 100644 --- a/src/ghw_process_ota_files.ts +++ b/src/ghw_process_ota_files.ts @@ -149,7 +149,11 @@ export async function processOtaFiles( const statusToBase = getParsedImageStatus(parsedImage, baseMatch); // Manufacturer specific checks - if (parsedImage.manufacturerCode === GLEDOPTO_MANUFACTURER_CODE && !fileExtraMetas.modelId) { + if ( + parsedImage.manufacturerCode === GLEDOPTO_MANUFACTURER_CODE && + !fileExtraMetas.modelId && + (fileExtraMetas.manufacturerName == null || fileExtraMetas.manufacturerName.some((name) => name.toLowerCase().includes("gledopto"))) + ) { // Gledopto uses the same imageType for every device, force modelId to be present. // https://github.com/Koenkk/zigbee-OTA/pull/864 throw new Error("Gledopto image requires extra `modelId` metadata"); diff --git a/tests/ghw_check_ota_pr.test.ts b/tests/ghw_check_ota_pr.test.ts index e46fc52..60f63dc 100644 --- a/tests/ghw_check_ota_pr.test.ts +++ b/tests/ghw_check_ota_pr.test.ts @@ -634,6 +634,8 @@ Text after end tag`); ["", IMAGE_TUYA, "Tuya image requires extra `manufacturerName` metadata"], ['"modelId": "GL-C-008"', IMAGE_GLEDOPTO, undefined], ["", IMAGE_GLEDOPTO, "Gledopto image requires extra `modelId` metadata"], + ['"manufacturerName": ["GleDopto"]', IMAGE_GLEDOPTO, "Gledopto image requires extra `modelId` metadata"], + ['"manufacturerName": ["OtherManuf"]', IMAGE_GLEDOPTO, undefined], ])("manufacturer specific checks", async (body: string, image: string, error: string | undefined) => { filePaths = [useImage(image)]; const newContext = withBody(`\`\`\`json