Skip to content

Commit d22d7de

Browse files
committed
Add foxloader.useJarTask() API for complex build scripts.
1 parent db97f5a commit d22d7de

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed

dev/src/main/groovy/com/fox2code/foxloader/dev/FoxLoaderConfig.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@
2525

2626
import com.fox2code.foxloader.dependencies.DependencyHelper;
2727
import com.fox2code.foxloader.launcher.BuildConfig;
28+
import org.gradle.api.Project;
29+
import org.gradle.api.tasks.TaskProvider;
30+
import org.gradle.jvm.tasks.Jar;
2831

2932
import java.text.Normalizer;
3033
import java.util.ArrayList;
@@ -92,6 +95,32 @@ public String getUsedDependencyBundles() {
9295
return stringJoiner.toString();
9396
}
9497

98+
// Special jar task replacement for complex build scripts
99+
Jar jarTaskToUse;
100+
TaskProvider<Jar> jarTaskToUseProvider;
101+
102+
public final void useJarTask(Jar jarTaskToUse) {
103+
this.checkConfigMutable();
104+
this.jarTaskToUse = jarTaskToUse;
105+
this.jarTaskToUseProvider = null;
106+
}
107+
108+
public final void useJarTask(TaskProvider<Jar> jarTaskToUseProvider) {
109+
this.checkConfigMutable();
110+
this.jarTaskToUse = null;
111+
this.jarTaskToUseProvider = jarTaskToUseProvider;
112+
}
113+
114+
final Jar getJarTaskToUse(Project project) {
115+
if (this.jarTaskToUse != null) {
116+
return this.jarTaskToUse;
117+
}
118+
if (this.jarTaskToUseProvider != null) {
119+
return this.jarTaskToUseProvider.get();
120+
}
121+
return (Jar) project.getTasks().named("jar").get();
122+
}
123+
95124
// For testing only
96125
public String dumpClass;
97126
public String foxLoaderLibVersionOverride;

dev/src/main/groovy/com/fox2code/foxloader/dev/GradlePlugin.groovy

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,8 @@ class GradlePlugin implements Plugin<Project> {
293293
if (config.modVersion == null && project.version != null) {
294294
config.modVersion = project.version.toString()
295295
}
296-
(project.getTasks().named("jar").get() as Jar).manifest {
296+
Jar jarTask = config.getJarTaskToUse(project)
297+
jarTask.manifest {
297298
attributes 'For-FoxLoader-Version': BuildConfig.FOXLOADER_VERSION
298299
attributes 'For-ReIndev-Version': BuildConfig.REINDEV_VERSION
299300
if (!config.usedDependencyBundles.isEmpty()) {
@@ -343,7 +344,6 @@ class GradlePlugin implements Plugin<Project> {
343344
attributes 'Unofficial': 'true'
344345
}
345346
}
346-
Jar jarTask = ((Jar) project.getTasks().named("jar").get())
347347
File mod = jarTask.getArchiveFile().get().getAsFile()
348348
JsonElement savedUsername = foxLoaderJsonData.get("username")
349349
String username = config.username
@@ -452,7 +452,7 @@ class GradlePlugin implements Plugin<Project> {
452452
}
453453
String owner = path.substring(0, i)
454454
String repo = path.substring(i + 1)
455-
Jar jar = (project.getTasks().named("jar").get() as Jar)
455+
Jar jar = config.getJarTaskToUse(project)
456456
String modWebsite = config.modWebsite
457457
if (modWebsite == null) {
458458
modWebsite = service.websitePrefix + path

0 commit comments

Comments
 (0)