From 24c166fc792bc723d8000614947eec6d7eee4b74 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Thu, 11 Feb 2021 18:50:25 +0000 Subject: [PATCH] Generate IDE run configs on a per config basis. Allows for much finer grain control over what run configs are generated. Defaults to generate all run configs on the root project. --- .../net/fabricmc/loom/LoomGradleExtension.java | 2 -- .../loom/configuration/CompileConfiguration.java | 4 +--- .../configuration/ide/RunConfigSettings.java | 16 ++++++++++++++++ .../ide/SetupIntelijRunConfigs.java | 4 ++++ .../fabricmc/loom/task/GenEclipseRunsTask.java | 4 ++++ .../fabricmc/loom/task/GenIdeaProjectTask.java | 4 ++++ .../fabricmc/loom/task/GenVsCodeProjectTask.java | 4 ++++ 7 files changed, 33 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/fabricmc/loom/LoomGradleExtension.java b/src/main/java/net/fabricmc/loom/LoomGradleExtension.java index 3bb2a66..1e03120 100644 --- a/src/main/java/net/fabricmc/loom/LoomGradleExtension.java +++ b/src/main/java/net/fabricmc/loom/LoomGradleExtension.java @@ -60,7 +60,6 @@ public class LoomGradleExtension { public String refmapName; public String loaderLaunchMethod; public boolean remapMod = true; - public boolean autoGenIDERuns; public String customManifest = null; public File accessWidener = null; public Function intermediaryUrl = mcVer -> "https://maven.fabricmc.net/net/fabricmc/intermediary/" + mcVer + "/intermediary-" + mcVer + "-v2.jar"; @@ -115,7 +114,6 @@ public class LoomGradleExtension { public LoomGradleExtension(Project project) { this.project = project; - this.autoGenIDERuns = isRootProject(); this.unmappedMods = project.files(); this.runConfigs = project.container(RunConfigSettings.class, baseName -> new RunConfigSettings(project, baseName)); diff --git a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java index 0f0e6f1..8402ce3 100644 --- a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java +++ b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java @@ -168,9 +168,7 @@ public final class CompileConfiguration { project1.getTasks().getByName("eclipse").finalizedBy(project1.getTasks().getByName("genEclipseRuns")); project1.getTasks().getByName("cleanEclipse").finalizedBy(project1.getTasks().getByName("cleanEclipseRuns")); - if (extension.autoGenIDERuns) { - SetupIntelijRunConfigs.setup(project1); - } + SetupIntelijRunConfigs.setup(project1); // Enables the default mod remapper if (extension.remapMod) { diff --git a/src/main/java/net/fabricmc/loom/configuration/ide/RunConfigSettings.java b/src/main/java/net/fabricmc/loom/configuration/ide/RunConfigSettings.java index 415fc54..97c4c3e 100644 --- a/src/main/java/net/fabricmc/loom/configuration/ide/RunConfigSettings.java +++ b/src/main/java/net/fabricmc/loom/configuration/ide/RunConfigSettings.java @@ -92,6 +92,13 @@ public final class RunConfigSettings implements Named { */ private final String baseName; + /** + * When true a run configuration file will be generated for IDE's. + * + *

By default only run configs on the root project will be generated. + */ + private boolean generateIDEConfig; + private final Project project; private final LoomGradleExtension extension; @@ -99,6 +106,7 @@ public final class RunConfigSettings implements Named { this.baseName = baseName; this.project = project; this.extension = project.getExtensions().getByType(LoomGradleExtension.class); + this.generateIDEConfig = extension.isRootProject(); source("main"); runDir("run"); @@ -232,6 +240,10 @@ public final class RunConfigSettings implements Named { }); } + public void generateIDEConfig(boolean generateIDEConfig) { + this.generateIDEConfig = generateIDEConfig; + } + /** * Add the {@code -XstartOnFirstThread} JVM argument when on OSX. */ @@ -287,4 +299,8 @@ public final class RunConfigSettings implements Named { file.mkdir(); } } + + public boolean shouldGenerateIDEConfig() { + return generateIDEConfig; + } } diff --git a/src/main/java/net/fabricmc/loom/configuration/ide/SetupIntelijRunConfigs.java b/src/main/java/net/fabricmc/loom/configuration/ide/SetupIntelijRunConfigs.java index e4bcd21..a838faf 100644 --- a/src/main/java/net/fabricmc/loom/configuration/ide/SetupIntelijRunConfigs.java +++ b/src/main/java/net/fabricmc/loom/configuration/ide/SetupIntelijRunConfigs.java @@ -72,6 +72,10 @@ public class SetupIntelijRunConfigs { } for (RunConfigSettings settings : extension.getRunConfigs()) { + if (!settings.shouldGenerateIDEConfig()) { + continue; + } + RunConfig config = RunConfig.runConfig(project, settings); String name = config.configName.replaceAll("[^a-zA-Z0-9$_]", "_"); diff --git a/src/main/java/net/fabricmc/loom/task/GenEclipseRunsTask.java b/src/main/java/net/fabricmc/loom/task/GenEclipseRunsTask.java index 9a4dde9..61d98ee 100644 --- a/src/main/java/net/fabricmc/loom/task/GenEclipseRunsTask.java +++ b/src/main/java/net/fabricmc/loom/task/GenEclipseRunsTask.java @@ -43,6 +43,10 @@ public class GenEclipseRunsTask extends AbstractLoomTask { LoomGradleExtension extension = getExtension(); for (RunConfigSettings settings : extension.getRunConfigs()) { + if (!settings.shouldGenerateIDEConfig()) { + continue; + } + String name = settings.getName(); File configs = new File(getProject().getRootDir(), eclipseModel.getProject().getName() + "_" + name + ".launch"); diff --git a/src/main/java/net/fabricmc/loom/task/GenIdeaProjectTask.java b/src/main/java/net/fabricmc/loom/task/GenIdeaProjectTask.java index cf08f56..cc9ce76 100644 --- a/src/main/java/net/fabricmc/loom/task/GenIdeaProjectTask.java +++ b/src/main/java/net/fabricmc/loom/task/GenIdeaProjectTask.java @@ -84,6 +84,10 @@ public class GenIdeaProjectTask extends AbstractLoomTask { } for (RunConfigSettings settings : getExtension().getRunConfigs()) { + if (!settings.shouldGenerateIDEConfig()) { + continue; + } + runManager.appendChild(RunConfig.runConfig(project, settings).genRuns(runManager)); settings.makeRunDir(); } diff --git a/src/main/java/net/fabricmc/loom/task/GenVsCodeProjectTask.java b/src/main/java/net/fabricmc/loom/task/GenVsCodeProjectTask.java index f7d8fe0..927159e 100644 --- a/src/main/java/net/fabricmc/loom/task/GenVsCodeProjectTask.java +++ b/src/main/java/net/fabricmc/loom/task/GenVsCodeProjectTask.java @@ -64,6 +64,10 @@ public class GenVsCodeProjectTask extends AbstractLoomTask { VsCodeLaunch launch = new VsCodeLaunch(); for (RunConfigSettings settings : getExtension().getRunConfigs()) { + if (!settings.shouldGenerateIDEConfig()) { + continue; + } + launch.add(RunConfig.runConfig(project, settings)); settings.makeRunDir(); }