Skip to content

Commit eaf53d4

Browse files
committed
Make it easier to execute after-evaluate actions in tasks
1 parent 802bc15 commit eaf53d4

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

gradleutils-shared/src/main/java/net/minecraftforge/gradleutils/shared/EnhancedTask.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*/
55
package net.minecraftforge.gradleutils.shared;
66

7+
import org.gradle.api.Action;
78
import org.gradle.api.Project;
89
import org.gradle.api.Task;
910
import org.gradle.api.file.Directory;
@@ -91,4 +92,12 @@ default DirectoryProperty workingProjectDirectory() {
9192
default @Internal Provider<RegularFile> getOutputFile(String fileName) {
9293
return this.localCaches().file(String.format("%s/%s", this.getName(), fileName)).map(this.getPlugin().getProblemsInternal().ensureFileLocation());
9394
}
95+
96+
default void afterEvaluate(Action<? super Project> action) {
97+
try {
98+
getProject().afterEvaluate(action);
99+
} catch (Exception ignored) {
100+
action.execute(getProject());
101+
}
102+
}
94103
}

gradleutils-shared/src/main/java/net/minecraftforge/gradleutils/shared/SharedUtil.java

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import groovy.transform.stc.ClosureParams;
1010
import groovy.transform.stc.FirstParam;
1111
import kotlin.jvm.functions.Function0;
12+
import org.codehaus.groovy.runtime.DefaultGroovyMethods;
13+
import org.codehaus.groovy.runtime.InvokerHelper;
1214
import org.gradle.TaskExecutionRequest;
1315
import org.gradle.api.Action;
1416
import org.gradle.api.DomainObjectCollection;
@@ -240,6 +242,38 @@ public List<String> getArgs() {
240242
}
241243
//endregion
242244

245+
//region Dependency Information
246+
247+
public static String dependencyToArtifactString(Dependency dependency) {
248+
var builder = new StringBuilder();
249+
250+
builder.append(dependency.getGroup() != null ? dependency.getGroup() + ':' : "");
251+
builder.append(dependency.getName());
252+
builder.append(dependency.getVersion() != null ? ':' + dependency.getVersion() : "");
253+
var classifier = getProperty(dependency, "classifier");
254+
builder.append(classifier != null ? ':' + classifier : "");
255+
var extension = getProperty(dependency, "extension", "artifactType");
256+
builder.append(extension != null ? '@' + extension : "");
257+
258+
return builder.toString();
259+
}
260+
261+
private static @Nullable String getProperty(Object object, String... property) {
262+
for (var name : property) {
263+
var p = DefaultGroovyMethods.hasProperty(object, name);
264+
if (p == null) continue;
265+
266+
var o = p.getProperty(object);
267+
if (o == null) continue;
268+
269+
var s = o.toString();
270+
return !"null".equals(s) ? s : null;
271+
}
272+
273+
return null;
274+
}
275+
//endregion
276+
243277
//region Dependency Handling
244278

245279
/// Checks if the given dependency is in the given source set.
@@ -312,7 +346,7 @@ public static Set<Dependency> collect(NamedDomainObjectSet<Configuration> config
312346
.collect(Collectors.toSet());
313347
}
314348

315-
private static <T> void guardCheck(T t) { }
349+
static <T> void guardCheck(T t) { }
316350

317351
/// Iterates through the given source set's classpath configurations using the given action.
318352
///

0 commit comments

Comments
 (0)