From 96e0dd30be60418b076d5b5d24fa746f64dfe2c7 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Wed, 12 Dec 2018 13:43:42 +0000 Subject: [PATCH] Auto generate eclipse launch files --- build.gradle | 2 +- .../net/fabricmc/loom/AbstractPlugin.java | 1 + .../net/fabricmc/loom/LoomGradlePlugin.java | 1 + .../loom/task/GenEclipseRunsTask.java | 53 +++++++++++++++++++ .../loom/task/GenIdeaProjectTask.java | 6 +-- .../loom/task/GenVsCodeProjectTask.java | 10 ++-- .../{IdeaRunConfig.java => RunConfig.java} | 14 ++--- .../loom/util/SetupIntelijRunConfigs.java | 4 +- .../resources/eclipse_run_config_template.xml | 15 ++++++ 9 files changed, 88 insertions(+), 18 deletions(-) create mode 100644 src/main/java/net/fabricmc/loom/task/GenEclipseRunsTask.java rename src/main/java/net/fabricmc/loom/util/{IdeaRunConfig.java => RunConfig.java} (93%) create mode 100644 src/main/resources/eclipse_run_config_template.xml diff --git a/build.gradle b/build.gradle index dfd12d6..be21ecc 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ targetCompatibility = 1.8 group = 'net.fabricmc' archivesBaseName = project.name -version = '0.1.0-SNAPSHOT' +version = '0.1.1-SNAPSHOT' def build = "local" def ENV = System.getenv() diff --git a/src/main/java/net/fabricmc/loom/AbstractPlugin.java b/src/main/java/net/fabricmc/loom/AbstractPlugin.java index 2e7dde1..f8e5b82 100644 --- a/src/main/java/net/fabricmc/loom/AbstractPlugin.java +++ b/src/main/java/net/fabricmc/loom/AbstractPlugin.java @@ -222,6 +222,7 @@ public class AbstractPlugin implements Plugin { dependencyManager.handleDependencies(project1); project1.getTasks().getByName("idea").finalizedBy(project1.getTasks().getByName("genIdeaWorkspace")); + project1.getTasks().getByName("eclipse").finalizedBy(project1.getTasks().getByName("genEclipseRuns")); SetupIntelijRunConfigs.setup(project1); diff --git a/src/main/java/net/fabricmc/loom/LoomGradlePlugin.java b/src/main/java/net/fabricmc/loom/LoomGradlePlugin.java index bef31a2..b52092f 100644 --- a/src/main/java/net/fabricmc/loom/LoomGradlePlugin.java +++ b/src/main/java/net/fabricmc/loom/LoomGradlePlugin.java @@ -40,6 +40,7 @@ public class LoomGradlePlugin extends AbstractPlugin { makeTask("genIdeaWorkspace", GenIdeaProjectTask.class).dependsOn("idea").setGroup("ide"); makeTask("vscode", GenVsCodeProjectTask.class).setGroup("ide"); + makeTask("genEclipseRuns", GenEclipseRunsTask.class).setGroup("ide"); makeTask("runClient", RunClientTask.class).dependsOn("buildNeeded").setGroup("minecraftMapped"); makeTask("runServer", RunServerTask.class).dependsOn("buildNeeded").setGroup("minecraftMapped"); diff --git a/src/main/java/net/fabricmc/loom/task/GenEclipseRunsTask.java b/src/main/java/net/fabricmc/loom/task/GenEclipseRunsTask.java new file mode 100644 index 0000000..b238327 --- /dev/null +++ b/src/main/java/net/fabricmc/loom/task/GenEclipseRunsTask.java @@ -0,0 +1,53 @@ +/* + * This file is part of fabric-loom, licensed under the MIT License (MIT). + * + * Copyright (c) 2016, 2017, 2018 FabricMC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package net.fabricmc.loom.task; + +import net.fabricmc.loom.util.RunConfig; +import org.apache.commons.io.FileUtils; +import org.gradle.api.DefaultTask; +import org.gradle.api.tasks.TaskAction; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +public class GenEclipseRunsTask extends DefaultTask { + + @TaskAction + public void genRuns() throws IOException { + File clientRunConfigs = new File(getProject().getRootDir(), "Minecraft_Client.launch"); + File serverRunConfigs = new File(getProject().getRootDir(), "Minecraft_Server.launch"); + + String clientRunConfig = RunConfig.clientRunConfig(getProject()).fromDummy("eclipse_run_config_template.xml"); + String serverRunConfig = RunConfig.serverRunConfig(getProject()).fromDummy("eclipse_run_config_template.xml"); + + if(!clientRunConfigs.exists()) + FileUtils.writeStringToFile(clientRunConfigs, clientRunConfig, StandardCharsets.UTF_8); + if(!serverRunConfigs.exists()) + FileUtils.writeStringToFile(serverRunConfigs, serverRunConfig, StandardCharsets.UTF_8); + + } + +} diff --git a/src/main/java/net/fabricmc/loom/task/GenIdeaProjectTask.java b/src/main/java/net/fabricmc/loom/task/GenIdeaProjectTask.java index 5860495..4dcd468 100644 --- a/src/main/java/net/fabricmc/loom/task/GenIdeaProjectTask.java +++ b/src/main/java/net/fabricmc/loom/task/GenIdeaProjectTask.java @@ -25,7 +25,7 @@ package net.fabricmc.loom.task; import net.fabricmc.loom.LoomGradleExtension; -import net.fabricmc.loom.util.IdeaRunConfig; +import net.fabricmc.loom.util.RunConfig; import org.gradle.api.DefaultTask; import org.gradle.api.Project; import org.gradle.api.tasks.TaskAction; @@ -73,8 +73,8 @@ public class GenIdeaProjectTask extends DefaultTask { throw new RuntimeException("Failed to generate intellij run configurations (runManager was not found)"); } - runManager.appendChild(IdeaRunConfig.clientRunConfig(project).genRuns(runManager)); - runManager.appendChild(IdeaRunConfig.serverRunConfig(project).genRuns(runManager)); + runManager.appendChild(RunConfig.clientRunConfig(project).genRuns(runManager)); + runManager.appendChild(RunConfig.serverRunConfig(project).genRuns(runManager)); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); diff --git a/src/main/java/net/fabricmc/loom/task/GenVsCodeProjectTask.java b/src/main/java/net/fabricmc/loom/task/GenVsCodeProjectTask.java index 488481e..09d186d 100644 --- a/src/main/java/net/fabricmc/loom/task/GenVsCodeProjectTask.java +++ b/src/main/java/net/fabricmc/loom/task/GenVsCodeProjectTask.java @@ -27,7 +27,7 @@ package net.fabricmc.loom.task; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import net.fabricmc.loom.LoomGradleExtension; -import net.fabricmc.loom.util.IdeaRunConfig; +import net.fabricmc.loom.util.RunConfig; import org.apache.commons.io.FileUtils; import org.gradle.api.DefaultTask; import org.gradle.api.tasks.TaskAction; @@ -57,8 +57,8 @@ public class GenVsCodeProjectTask extends DefaultTask { } VsCodeLaunch launch = new VsCodeLaunch(); - launch.add(IdeaRunConfig.clientRunConfig(getProject())); - launch.add(IdeaRunConfig.serverRunConfig(getProject())); + launch.add(RunConfig.clientRunConfig(getProject())); + launch.add(RunConfig.serverRunConfig(getProject())); Gson gson = new GsonBuilder().setPrettyPrinting().create(); String json = gson.toJson(launch); @@ -79,7 +79,7 @@ public class GenVsCodeProjectTask extends DefaultTask { public String version = "0.2.0"; public List configurations = new ArrayList<>(); - public void add(IdeaRunConfig runConfig) { + public void add(RunConfig runConfig) { configurations.add(new VsCodeConfiguration(runConfig)); } } @@ -95,7 +95,7 @@ public class GenVsCodeProjectTask extends DefaultTask { public String vmArgs; public String args; - public VsCodeConfiguration(IdeaRunConfig runConfig) { + public VsCodeConfiguration(RunConfig runConfig) { this.name = runConfig.configName; this.mainClass = runConfig.mainClass; this.vmArgs = runConfig.vmArgs; diff --git a/src/main/java/net/fabricmc/loom/util/IdeaRunConfig.java b/src/main/java/net/fabricmc/loom/util/RunConfig.java similarity index 93% rename from src/main/java/net/fabricmc/loom/util/IdeaRunConfig.java rename to src/main/java/net/fabricmc/loom/util/RunConfig.java index 5e528ed..ac68bd3 100644 --- a/src/main/java/net/fabricmc/loom/util/IdeaRunConfig.java +++ b/src/main/java/net/fabricmc/loom/util/RunConfig.java @@ -42,7 +42,7 @@ import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.Map; -public class IdeaRunConfig { +public class RunConfig { public String configName; public String projectName; public String mainClass; @@ -82,12 +82,12 @@ public class IdeaRunConfig { return e; } - public static IdeaRunConfig clientRunConfig(Project project){ + public static RunConfig clientRunConfig(Project project){ LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); MinecraftProvider minecraftProvider = extension.getMinecraftProvider(); MinecraftVersionInfo minecraftVersionInfo = minecraftProvider.versionInfo; - IdeaRunConfig ideaClient = new IdeaRunConfig(); + RunConfig ideaClient = new RunConfig(); ideaClient.mainClass = "net.minecraft.launchwrapper.Launch"; ideaClient.projectName = project.getName(); ideaClient.configName = "Minecraft Client"; @@ -98,10 +98,10 @@ public class IdeaRunConfig { return ideaClient; } - public static IdeaRunConfig serverRunConfig(Project project){ + public static RunConfig serverRunConfig(Project project){ LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); - IdeaRunConfig ideaServer = new IdeaRunConfig(); + RunConfig ideaServer = new RunConfig(); ideaServer.mainClass = "net.minecraft.launchwrapper.Launch"; ideaServer.projectName = project.getName(); ideaServer.configName = "Minecraft Server"; @@ -112,8 +112,8 @@ public class IdeaRunConfig { return ideaServer; } - public String fromDummy() throws IOException { - InputStream input = SetupIntelijRunConfigs.class.getClassLoader().getResourceAsStream("idea_run_config_template.xml"); + public String fromDummy(String dummy) throws IOException { + InputStream input = SetupIntelijRunConfigs.class.getClassLoader().getResourceAsStream(dummy); String dummyConfig = IOUtils.toString(input, StandardCharsets.UTF_8); input.close(); diff --git a/src/main/java/net/fabricmc/loom/util/SetupIntelijRunConfigs.java b/src/main/java/net/fabricmc/loom/util/SetupIntelijRunConfigs.java index 15c3895..5dc08ab 100644 --- a/src/main/java/net/fabricmc/loom/util/SetupIntelijRunConfigs.java +++ b/src/main/java/net/fabricmc/loom/util/SetupIntelijRunConfigs.java @@ -63,8 +63,8 @@ public class SetupIntelijRunConfigs { runConfigsDir.mkdirs(); } - String clientRunConfig = IdeaRunConfig.clientRunConfig(project).fromDummy(); - String serverRunConfig = IdeaRunConfig.serverRunConfig(project).fromDummy(); + String clientRunConfig = RunConfig.clientRunConfig(project).fromDummy("idea_run_config_template.xml"); + String serverRunConfig = RunConfig.serverRunConfig(project).fromDummy("idea_run_config_template.xml"); if(!clientRunConfigs.exists()) FileUtils.writeStringToFile(clientRunConfigs, clientRunConfig, StandardCharsets.UTF_8); diff --git a/src/main/resources/eclipse_run_config_template.xml b/src/main/resources/eclipse_run_config_template.xml new file mode 100644 index 0000000..bcbdd89 --- /dev/null +++ b/src/main/resources/eclipse_run_config_template.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + +