##// 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 import org.gradle.api.artifacts.Configuration;
10 import org.gradle.api.artifacts.Configuration;
11 import org.gradle.api.file.Directory;
11 import org.gradle.api.file.Directory;
12 import org.gradle.api.tasks.TaskContainer;
12 import org.gradle.api.tasks.TaskContainer;
13 import org.gradle.api.tasks.TaskProvider;
13 import org.implab.gradle.common.dsl.TaskGroup;
14 import org.implab.gradle.common.dsl.TaskGroup;
14 import org.implab.gradle.common.dsl.TaskSpec;
15 import org.implab.gradle.common.dsl.TasksMixin;
15 import org.implab.gradle.common.dsl.TasksMixin;
16 import org.implab.gradle.common.utils.ExtraProps;
16 import org.implab.gradle.common.utils.ExtraProps;
17
17
@@ -21,9 +21,8 public interface ProjectMixin extends Ta
21 Project getProject();
21 Project getProject();
22
22
23 @Override
23 @Override
24 default <T extends Task> TaskSpec<T> task(String name, Class<T> clazz) {
24 default <T extends Task> TaskProvider<T> task(String name, Class<T> clazz) {
25 var provider = getProject().getTasks().register(name, clazz);
25 return getProject().getTasks().register(name, clazz);
26 return new TaskSpec<>(provider);
27 }
26 }
28
27
29 /** Creates a new task group */
28 /** Creates a new task group */
@@ -4,6 +4,7 import java.util.Objects;
4
4
5 import org.gradle.api.Task;
5 import org.gradle.api.Task;
6 import org.gradle.api.tasks.TaskContainer;
6 import org.gradle.api.tasks.TaskContainer;
7 import org.gradle.api.tasks.TaskProvider;
7
8
8 public abstract class TaskGroup implements TasksMixin {
9 public abstract class TaskGroup implements TasksMixin {
9 private final String groupName;
10 private final String groupName;
@@ -16,10 +17,10 public abstract class TaskGroup implemen
16 }
17 }
17
18
18 @Override
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 var provider = tasks().register(taskName, clazz);
21 var provider = tasks().register(taskName, clazz);
21 provider.configure(t -> t.setGroup(groupName));
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 package org.implab.gradle.common.dsl;
1 package org.implab.gradle.common.dsl;
2
2
3 import org.gradle.api.Task;
3 import org.gradle.api.Task;
4 import org.gradle.api.tasks.TaskProvider;
4
5
5 public interface TasksMixin {
6 public interface TasksMixin {
6
7
7 default TaskSpec<Task> task(String name) {
8 default TaskProvider<Task> task(String name) {
8 return task(name, Task.class);
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 import javax.inject.Inject;
5 import javax.inject.Inject;
6
6
7 import org.gradle.api.NamedDomainObjectContainer;
7 import org.gradle.api.NamedDomainObjectContainer;
8 import org.gradle.api.NamedDomainObjectFactory;
8 import org.gradle.api.model.ObjectFactory;
9 import org.gradle.api.model.ObjectFactory;
9 import org.gradle.api.provider.Provider;
10 import org.gradle.api.provider.Provider;
10 import org.gradle.api.provider.ProviderFactory;
11 import org.gradle.api.provider.ProviderFactory;
@@ -37,4 +38,8 public interface ObjectsMixin {
37 default <T> NamedDomainObjectContainer<T> newContainer(Class<T> clazz) {
38 default <T> NamedDomainObjectContainer<T> newContainer(Class<T> clazz) {
38 return getObjects().domainObjectContainer(clazz);
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