##// END OF EJS Templates
WIP moving from TaskSpec to TaskProvider
cin -
r9:99956175cc38 default
parent child
Show More
@@ -0,0 +1,24
1 package org.implab.gradle.common.utils;
2
3 import groovy.lang.Closure;
4
5 import org.eclipse.jdt.annotation.NonNullByDefault;
6 import org.gradle.api.Action;
7
8 @NonNullByDefault
9 public final class Closures {
10 private Closures() {
11 }
12
13 public static <T> Action<T> action(Closure<?> closure) {
14 return arg -> {
15 closure.setDelegate(arg);
16 closure.call(arg);
17 };
18 }
19
20 public static void apply(Closure<?> action, Object target) {
21 action.setDelegate(target);
22 action.call(target);
23 }
24 }
@@ -10,8 +10,8 import org.gradle.api.Task;
10 10 import org.gradle.api.artifacts.Configuration;
11 11 import org.gradle.api.file.Directory;
12 12 import org.gradle.api.tasks.TaskContainer;
13 import org.gradle.api.tasks.TaskProvider;
13 14 import org.implab.gradle.common.dsl.TaskGroup;
14 import org.implab.gradle.common.dsl.TaskSpec;
15 15 import org.implab.gradle.common.dsl.TasksMixin;
16 16 import org.implab.gradle.common.utils.ExtraProps;
17 17
@@ -21,9 +21,8 public interface ProjectMixin extends Ta
21 21 Project getProject();
22 22
23 23 @Override
24 default <T extends Task> TaskSpec<T> task(String name, Class<T> clazz) {
25 var provider = getProject().getTasks().register(name, clazz);
26 return new TaskSpec<>(provider);
24 default <T extends Task> TaskProvider<T> task(String name, Class<T> clazz) {
25 return getProject().getTasks().register(name, clazz);
27 26 }
28 27
29 28 /** Creates a new task group */
@@ -4,6 +4,7 import java.util.Objects;
4 4
5 5 import org.gradle.api.Task;
6 6 import org.gradle.api.tasks.TaskContainer;
7 import org.gradle.api.tasks.TaskProvider;
7 8
8 9 public abstract class TaskGroup implements TasksMixin {
9 10 private final String groupName;
@@ -16,10 +17,10 public abstract class TaskGroup implemen
16 17 }
17 18
18 19 @Override
19 public <T extends Task> TaskSpec<T> task(String taskName, Class<T> clazz) {
20 public <T extends Task> TaskProvider<T> task(String taskName, Class<T> clazz) {
20 21 var provider = tasks().register(taskName, clazz);
21 22 provider.configure(t -> t.setGroup(groupName));
22 return new TaskSpec<>(provider);
23 return provider;
23 24 }
24 25
25 26 }
@@ -1,12 +1,13
1 1 package org.implab.gradle.common.dsl;
2 2
3 3 import org.gradle.api.Task;
4 import org.gradle.api.tasks.TaskProvider;
4 5
5 6 public interface TasksMixin {
6 7
7 default TaskSpec<Task> task(String name) {
8 default TaskProvider<Task> task(String name) {
8 9 return task(name, Task.class);
9 10 }
10 11
11 <T extends Task> TaskSpec<T> task(String name, Class<T> clazz);
12 <T extends Task> TaskProvider<T> task(String name, Class<T> clazz);
12 13 }
@@ -5,6 +5,7 import java.util.function.Supplier;
5 5 import javax.inject.Inject;
6 6
7 7 import org.gradle.api.NamedDomainObjectContainer;
8 import org.gradle.api.NamedDomainObjectFactory;
8 9 import org.gradle.api.model.ObjectFactory;
9 10 import org.gradle.api.provider.Provider;
10 11 import org.gradle.api.provider.ProviderFactory;
@@ -37,4 +38,8 public interface ObjectsMixin {
37 38 default <T> NamedDomainObjectContainer<T> newContainer(Class<T> clazz) {
38 39 return getObjects().domainObjectContainer(clazz);
39 40 }
41
42 default <T> NamedDomainObjectContainer<T> newContainer(Class<T> clazz, NamedDomainObjectFactory<T> factory) {
43 return getObjects().domainObjectContainer(clazz, factory);
44 }
40 45 }
General Comments 0
You need to be logged in to leave comments. Login now