From e827dea7ff76ce7ad74138f9f75ee8cd2933a17b Mon Sep 17 00:00:00 2001 From: Daniel Scalzi Date: Sat, 18 Jan 2020 13:01:27 -0500 Subject: [PATCH] Create default metadata if mcmod.info is malformed. --- .../struct/model/module/forgemod.struct.ts | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/model/struct/model/module/forgemod.struct.ts b/src/model/struct/model/module/forgemod.struct.ts index 6f40fc2..2383e7c 100644 --- a/src/model/struct/model/module/forgemod.struct.ts +++ b/src/model/struct/model/module/forgemod.struct.ts @@ -73,16 +73,27 @@ export class ForgeModStructure extends ModuleStructure { } } + let createDefault = false + if (raw) { // Assuming the main mod will be the first entry in this file. - const resolved = JSON.parse(raw) as object - if (resolved.hasOwnProperty('modListVersion')) { - this.forgeModMetadata[name] = (resolved as McModInfoList).modList[0] - } else { - this.forgeModMetadata[name] = (resolved as McModInfo[])[0] + try { + const resolved = JSON.parse(raw) as object + if (resolved.hasOwnProperty('modListVersion')) { + this.forgeModMetadata[name] = (resolved as McModInfoList).modList[0] + } else { + this.forgeModMetadata[name] = (resolved as McModInfo[])[0] + } + } catch (err) { + console.error(`ForgeMod ${name} contains an invalid mcmod.info file.`) + createDefault = true } } else { console.error(`ForgeMod ${name} does not contain mcmod.info file.`) + createDefault = true + } + + if (createDefault) { this.forgeModMetadata[name] = ({ modid: name.substring(0, name.lastIndexOf('.')).toLowerCase(), name,