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.
This commit is contained in:
		
							parent
							
								
									6b481fbcd6
								
							
						
					
					
						commit
						24c166fc79
					
				
					 7 changed files with 33 additions and 5 deletions
				
			
		|  | @ -60,7 +60,6 @@ public class LoomGradleExtension { | ||||||
| 	public String refmapName; | 	public String refmapName; | ||||||
| 	public String loaderLaunchMethod; | 	public String loaderLaunchMethod; | ||||||
| 	public boolean remapMod = true; | 	public boolean remapMod = true; | ||||||
| 	public boolean autoGenIDERuns; |  | ||||||
| 	public String customManifest = null; | 	public String customManifest = null; | ||||||
| 	public File accessWidener = null; | 	public File accessWidener = null; | ||||||
| 	public Function<String, Object> intermediaryUrl = mcVer -> "https://maven.fabricmc.net/net/fabricmc/intermediary/" + mcVer + "/intermediary-" + mcVer + "-v2.jar"; | 	public Function<String, Object> 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) { | 	public LoomGradleExtension(Project project) { | ||||||
| 		this.project = project; | 		this.project = project; | ||||||
| 		this.autoGenIDERuns = isRootProject(); |  | ||||||
| 		this.unmappedMods = project.files(); | 		this.unmappedMods = project.files(); | ||||||
| 		this.runConfigs = project.container(RunConfigSettings.class, | 		this.runConfigs = project.container(RunConfigSettings.class, | ||||||
| 				baseName -> new RunConfigSettings(project, baseName)); | 				baseName -> new RunConfigSettings(project, baseName)); | ||||||
|  |  | ||||||
|  | @ -168,9 +168,7 @@ public final class CompileConfiguration { | ||||||
| 			project1.getTasks().getByName("eclipse").finalizedBy(project1.getTasks().getByName("genEclipseRuns")); | 			project1.getTasks().getByName("eclipse").finalizedBy(project1.getTasks().getByName("genEclipseRuns")); | ||||||
| 			project1.getTasks().getByName("cleanEclipse").finalizedBy(project1.getTasks().getByName("cleanEclipseRuns")); | 			project1.getTasks().getByName("cleanEclipse").finalizedBy(project1.getTasks().getByName("cleanEclipseRuns")); | ||||||
| 
 | 
 | ||||||
| 			if (extension.autoGenIDERuns) { | 			SetupIntelijRunConfigs.setup(project1); | ||||||
| 				SetupIntelijRunConfigs.setup(project1); |  | ||||||
| 			} |  | ||||||
| 
 | 
 | ||||||
| 			// Enables the default mod remapper | 			// Enables the default mod remapper | ||||||
| 			if (extension.remapMod) { | 			if (extension.remapMod) { | ||||||
|  |  | ||||||
|  | @ -92,6 +92,13 @@ public final class RunConfigSettings implements Named { | ||||||
| 	 */ | 	 */ | ||||||
| 	private final String baseName; | 	private final String baseName; | ||||||
| 
 | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * When true a run configuration file will be generated for IDE's. | ||||||
|  | 	 * | ||||||
|  | 	 * <p>By default only run configs on the root project will be generated. | ||||||
|  | 	 */ | ||||||
|  | 	private boolean generateIDEConfig; | ||||||
|  | 
 | ||||||
| 	private final Project project; | 	private final Project project; | ||||||
| 	private final LoomGradleExtension extension; | 	private final LoomGradleExtension extension; | ||||||
| 
 | 
 | ||||||
|  | @ -99,6 +106,7 @@ public final class RunConfigSettings implements Named { | ||||||
| 		this.baseName = baseName; | 		this.baseName = baseName; | ||||||
| 		this.project = project; | 		this.project = project; | ||||||
| 		this.extension = project.getExtensions().getByType(LoomGradleExtension.class); | 		this.extension = project.getExtensions().getByType(LoomGradleExtension.class); | ||||||
|  | 		this.generateIDEConfig = extension.isRootProject(); | ||||||
| 
 | 
 | ||||||
| 		source("main"); | 		source("main"); | ||||||
| 		runDir("run"); | 		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. | 	 * Add the {@code -XstartOnFirstThread} JVM argument when on OSX. | ||||||
| 	 */ | 	 */ | ||||||
|  | @ -287,4 +299,8 @@ public final class RunConfigSettings implements Named { | ||||||
| 			file.mkdir(); | 			file.mkdir(); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
|  | 	public boolean shouldGenerateIDEConfig() { | ||||||
|  | 		return generateIDEConfig; | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -72,6 +72,10 @@ public class SetupIntelijRunConfigs { | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		for (RunConfigSettings settings : extension.getRunConfigs()) { | 		for (RunConfigSettings settings : extension.getRunConfigs()) { | ||||||
|  | 			if (!settings.shouldGenerateIDEConfig()) { | ||||||
|  | 				continue; | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
| 			RunConfig config = RunConfig.runConfig(project, settings); | 			RunConfig config = RunConfig.runConfig(project, settings); | ||||||
| 			String name = config.configName.replaceAll("[^a-zA-Z0-9$_]", "_"); | 			String name = config.configName.replaceAll("[^a-zA-Z0-9$_]", "_"); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -43,6 +43,10 @@ public class GenEclipseRunsTask extends AbstractLoomTask { | ||||||
| 		LoomGradleExtension extension = getExtension(); | 		LoomGradleExtension extension = getExtension(); | ||||||
| 
 | 
 | ||||||
| 		for (RunConfigSettings settings : extension.getRunConfigs()) { | 		for (RunConfigSettings settings : extension.getRunConfigs()) { | ||||||
|  | 			if (!settings.shouldGenerateIDEConfig()) { | ||||||
|  | 				continue; | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
| 			String name = settings.getName(); | 			String name = settings.getName(); | ||||||
| 
 | 
 | ||||||
| 			File configs = new File(getProject().getRootDir(), eclipseModel.getProject().getName() + "_" + name + ".launch"); | 			File configs = new File(getProject().getRootDir(), eclipseModel.getProject().getName() + "_" + name + ".launch"); | ||||||
|  |  | ||||||
|  | @ -84,6 +84,10 @@ public class GenIdeaProjectTask extends AbstractLoomTask { | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		for (RunConfigSettings settings : getExtension().getRunConfigs()) { | 		for (RunConfigSettings settings : getExtension().getRunConfigs()) { | ||||||
|  | 			if (!settings.shouldGenerateIDEConfig()) { | ||||||
|  | 				continue; | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
| 			runManager.appendChild(RunConfig.runConfig(project, settings).genRuns(runManager)); | 			runManager.appendChild(RunConfig.runConfig(project, settings).genRuns(runManager)); | ||||||
| 			settings.makeRunDir(); | 			settings.makeRunDir(); | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | @ -64,6 +64,10 @@ public class GenVsCodeProjectTask extends AbstractLoomTask { | ||||||
| 		VsCodeLaunch launch = new VsCodeLaunch(); | 		VsCodeLaunch launch = new VsCodeLaunch(); | ||||||
| 
 | 
 | ||||||
| 		for (RunConfigSettings settings : getExtension().getRunConfigs()) { | 		for (RunConfigSettings settings : getExtension().getRunConfigs()) { | ||||||
|  | 			if (!settings.shouldGenerateIDEConfig()) { | ||||||
|  | 				continue; | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
| 			launch.add(RunConfig.runConfig(project, settings)); | 			launch.add(RunConfig.runConfig(project, settings)); | ||||||
| 			settings.makeRunDir(); | 			settings.makeRunDir(); | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue