##// END OF EJS Templates
sync
cin -
r15:a8aa61eea9d1 default
parent child
Show More
@@ -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 EnvironmentSpec {
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.EnvironmentSpec;
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, EnvironmentSpec, ObjectsMixin {
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