From d0feecfbcb4bc6e6540ffd4ce1a13cdc691358a7 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Tue, 19 Mar 2024 23:03:49 +0000 Subject: [PATCH] Don't fail setup if a project FMJ is invalid. --- .../fabricmc/loom/util/fmj/FabricModJsonFactory.java | 10 ++++++++++ .../loom/test/integration/DataGenerationTest.groovy | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/fabricmc/loom/util/fmj/FabricModJsonFactory.java b/src/main/java/net/fabricmc/loom/util/fmj/FabricModJsonFactory.java index 4bdeb403..b672aa6d 100644 --- a/src/main/java/net/fabricmc/loom/util/fmj/FabricModJsonFactory.java +++ b/src/main/java/net/fabricmc/loom/util/fmj/FabricModJsonFactory.java @@ -36,9 +36,12 @@ import java.nio.file.Path; import java.util.Optional; import com.google.gson.JsonObject; +import com.google.gson.JsonSyntaxException; import org.gradle.api.tasks.SourceSet; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.VisibleForTesting; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import net.fabricmc.loom.LoomGradlePlugin; import net.fabricmc.loom.util.FileSystemUtil; @@ -48,6 +51,8 @@ import net.fabricmc.loom.util.gradle.SourceSetHelper; public final class FabricModJsonFactory { public static final String FABRIC_MOD_JSON = "fabric.mod.json"; + private static final Logger LOGGER = LoggerFactory.getLogger(FabricModJsonFactory.class); + private FabricModJsonFactory() { } @@ -115,6 +120,11 @@ public final class FabricModJsonFactory { try (Reader reader = Files.newBufferedReader(file.toPath(), StandardCharsets.UTF_8)) { return create(LoomGradlePlugin.GSON.fromJson(reader, JsonObject.class), new FabricModJsonSource.SourceSetSource(sourceSets)); + } catch (JsonSyntaxException e) { + LOGGER.warn("Failed to parse fabric.mod.json: {}", file.getAbsolutePath()); + return null; + } catch (IOException e) { + throw new UncheckedIOException("Failed to read " + file.getAbsolutePath(), e); } } diff --git a/src/test/groovy/net/fabricmc/loom/test/integration/DataGenerationTest.groovy b/src/test/groovy/net/fabricmc/loom/test/integration/DataGenerationTest.groovy index 80ee747a..66919c0f 100644 --- a/src/test/groovy/net/fabricmc/loom/test/integration/DataGenerationTest.groovy +++ b/src/test/groovy/net/fabricmc/loom/test/integration/DataGenerationTest.groovy @@ -88,7 +88,7 @@ class DataGenerationTest extends Specification implements GradleProjectTestTrait modDatagenImplementation fabricApi.module("fabric-data-generation-api-v1", "0.90.0+1.20.2") } - + println("%%" + loom.runs.datagen.configName + "%%") ''' when: