| @@ -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> Task |
|
24 | default <T extends Task> TaskProvider<T> task(String name, Class<T> clazz) { | |
| 25 |
|
|
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> Task |
|
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 |
|
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 Task |
|
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> Task |
|
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
