| @@ -3,7 +3,7 package org.implab.gradle.common.dsl; | |||||
| 3 |
|
3 | |||
| 4 | import org.gradle.api.provider.ListProperty; |
|
4 | import org.gradle.api.provider.ListProperty; | |
| 5 |
|
5 | |||
| 6 | public interface CommandSpec { |
|
6 | public interface TaskCommandSpecMixin { | |
| 7 | ListProperty<String> getCommandLine(); |
|
7 | ListProperty<String> getCommandLine(); | |
| 8 |
|
8 | |||
| 9 | void commandLine(Object arg0, Object... args); |
|
9 | void commandLine(Object arg0, Object... args); | |
| @@ -6,6 +6,7 import java.util.Map; | |||||
| 6 | import org.gradle.api.Action; |
|
6 | import org.gradle.api.Action; | |
| 7 | import org.gradle.api.file.DirectoryProperty; |
|
7 | import org.gradle.api.file.DirectoryProperty; | |
| 8 | import org.gradle.api.provider.MapProperty; |
|
8 | import org.gradle.api.provider.MapProperty; | |
|
|
9 | import org.gradle.api.provider.Property; | |||
| 9 | import org.implab.gradle.common.utils.Closures; |
|
10 | import org.implab.gradle.common.utils.Closures; | |
| 10 | import org.implab.gradle.common.utils.Values; |
|
11 | import org.implab.gradle.common.utils.Values; | |
| 11 |
|
12 | |||
| @@ -16,7 +17,10 import groovy.lang.Closure; | |||||
| 16 | * working directory and environment variables for the processes started within |
|
17 | * working directory and environment variables for the processes started within | |
| 17 | * this shell. |
|
18 | * this shell. | |
| 18 | */ |
|
19 | */ | |
| 19 |
public interface Env |
|
20 | public interface TaskEnvSpecMixin { | |
|
|
21 | ||||
|
|
22 | /** Inherit environment from current process */ | |||
|
|
23 | Property<Boolean> getInheritEnvironment(); | |||
| 20 |
|
24 | |||
| 21 | /** Working directory */ |
|
25 | /** Working directory */ | |
| 22 | DirectoryProperty getWorkingDirectory(); |
|
26 | DirectoryProperty getWorkingDirectory(); | |
| @@ -3,7 +3,7 package org.implab.gradle.common.dsl; | |||||
| 3 | import org.eclipse.jdt.annotation.NonNullByDefault; |
|
3 | import org.eclipse.jdt.annotation.NonNullByDefault; | |
| 4 |
|
4 | |||
| 5 | @NonNullByDefault |
|
5 | @NonNullByDefault | |
| 6 | public interface PipeSpec { |
|
6 | public interface TaskPipeSpecMixin { | |
| 7 | RedirectToSpec getStdout(); |
|
7 | RedirectToSpec getStdout(); | |
| 8 |
|
8 | |||
| 9 | RedirectToSpec getStderr(); |
|
9 | RedirectToSpec getStderr(); | |
| @@ -9,13 +9,14 import org.gradle.api.DefaultTask; | |||||
| 9 | import org.gradle.api.file.DirectoryProperty; |
|
9 | import org.gradle.api.file.DirectoryProperty; | |
| 10 | import org.gradle.api.provider.ListProperty; |
|
10 | import org.gradle.api.provider.ListProperty; | |
| 11 | import org.gradle.api.provider.MapProperty; |
|
11 | import org.gradle.api.provider.MapProperty; | |
|
|
12 | import org.gradle.api.provider.Property; | |||
| 12 | import org.gradle.api.tasks.Internal; |
|
13 | import org.gradle.api.tasks.Internal; | |
| 13 | import org.gradle.api.tasks.TaskAction; |
|
14 | import org.gradle.api.tasks.TaskAction; | |
| 14 | import org.implab.gradle.common.dsl.CommandSpec; |
|
15 | import org.implab.gradle.common.dsl.TaskCommandSpecMixin; | |
| 15 | import org.implab.gradle.common.dsl.PipeSpec; |
|
16 | import org.implab.gradle.common.dsl.TaskPipeSpecMixin; | |
| 16 | import org.implab.gradle.common.dsl.RedirectFromSpec; |
|
17 | import org.implab.gradle.common.dsl.RedirectFromSpec; | |
| 17 | import org.implab.gradle.common.dsl.RedirectToSpec; |
|
18 | import org.implab.gradle.common.dsl.RedirectToSpec; | |
| 18 |
import org.implab.gradle.common.dsl.Env |
|
19 | import org.implab.gradle.common.dsl.TaskEnvSpecMixin; | |
| 19 | import org.implab.gradle.common.exec.ExecBuilder; |
|
20 | import org.implab.gradle.common.exec.ExecBuilder; | |
| 20 | import org.implab.gradle.common.utils.ObjectsMixin; |
|
21 | import org.implab.gradle.common.utils.ObjectsMixin; | |
| 21 | import org.implab.gradle.common.utils.Strings; |
|
22 | import org.implab.gradle.common.utils.Strings; | |
| @@ -23,7 +24,7 import org.implab.gradle.common.utils.Th | |||||
| 23 |
|
24 | |||
| 24 | public abstract class ShellExecTask |
|
25 | public abstract class ShellExecTask | |
| 25 | extends DefaultTask |
|
26 | extends DefaultTask | |
| 26 |
implements CommandSpec, PipeSpec, Env |
|
27 | implements TaskCommandSpecMixin, TaskPipeSpecMixin, TaskEnvSpecMixin, ObjectsMixin { | |
| 27 |
|
28 | |||
| 28 | private final RedirectToSpec redirectStderr = new RedirectToSpec(); |
|
29 | private final RedirectToSpec redirectStderr = new RedirectToSpec(); | |
| 29 |
|
30 | |||
| @@ -33,6 +34,10 public abstract class ShellExecTask | |||||
| 33 |
|
34 | |||
| 34 | @Internal |
|
35 | @Internal | |
| 35 | @Override |
|
36 | @Override | |
|
|
37 | public abstract Property<Boolean> getInheritEnvironment(); | |||
|
|
38 | ||||
|
|
39 | @Internal | |||
|
|
40 | @Override | |||
| 36 | public abstract DirectoryProperty getWorkingDirectory(); |
|
41 | public abstract DirectoryProperty getWorkingDirectory(); | |
| 37 |
|
42 | |||
| 38 | @Internal |
|
43 | @Internal | |
| @@ -11,10 +11,7 public final class Closures { | |||||
| 11 | } |
|
11 | } | |
| 12 |
|
12 | |||
| 13 | public static <T> Action<T> action(Closure<?> closure) { |
|
13 | public static <T> Action<T> action(Closure<?> closure) { | |
| 14 |
return arg -> |
|
14 | return arg -> apply(closure, arg); | |
| 15 | closure.setDelegate(arg); |
|
|||
| 16 | closure.call(arg); |
|
|||
| 17 | }; |
|
|||
| 18 | } |
|
15 | } | |
| 19 |
|
16 | |||
| 20 | public static void apply(Closure<?> action, Object target) { |
|
17 | public static void apply(Closure<?> action, Object target) { | |
| @@ -66,6 +66,10 public final class Values { | |||||
| 66 | return () -> new ArrayIterator<>(values); |
|
66 | return () -> new ArrayIterator<>(values); | |
| 67 | } |
|
67 | } | |
| 68 |
|
68 | |||
|
|
69 | public static <T> Optional<T> optional(Provider<T> provider) { | |||
|
|
70 | return provider.isPresent() ? Optional.of(provider.get()) : Optional.empty(); | |||
|
|
71 | } | |||
|
|
72 | ||||
| 69 | private static class ArrayIterator<T> implements Iterator<T> { |
|
73 | private static class ArrayIterator<T> implements Iterator<T> { | |
| 70 | private final T[] data; |
|
74 | private final T[] data; | |
| 71 |
|
75 | |||
| 1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
General Comments 0
You need to be logged in to leave comments.
Login now
