Search in sources :

Example 1 with BaseExecSpec

use of org.gradle.process.BaseExecSpec in project OpenSearch by opensearch-project.

the class LoggedExec method genericExec.

private static <T extends BaseExecSpec> ExecResult genericExec(Function<Action<T>, ExecResult> function, Action<T> action) {
    if (LOGGER.isInfoEnabled()) {
        return function.apply(action);
    }
    ByteArrayOutputStream output = new ByteArrayOutputStream();
    try {
        return function.apply(spec -> {
            spec.setStandardOutput(output);
            spec.setErrorOutput(output);
            // optimize for short-lived process
            if (spec instanceof JavaExecSpec) {
                ((JavaExecSpec) spec).setJvmArgs(shortLivedArgs());
            }
            action.execute(spec);
            try {
                output.write(("Output for " + spec.getExecutable() + ":").getBytes(StandardCharsets.UTF_8));
            } catch (IOException e) {
                throw new UncheckedIOException(e);
            }
        });
    } catch (Exception e) {
        try {
            if (output.size() != 0) {
                LOGGER.error("Exec output and error:");
                NEWLINE.splitAsStream(output.toString("UTF-8")).forEach(s -> LOGGER.error("| " + s));
            }
        } catch (UnsupportedEncodingException ue) {
            throw new GradleException("Failed to read exec output", ue);
        }
        throw e;
    }
}
Also used : Arrays(java.util.Arrays) ByteArrayOutputStream(java.io.ByteArrayOutputStream) WorkResult(org.gradle.api.tasks.WorkResult) Function(java.util.function.Function) Logger(org.gradle.api.logging.Logger) Inject(javax.inject.Inject) Task(org.gradle.api.Task) ExecResult(org.gradle.process.ExecResult) Exec(org.gradle.api.tasks.Exec) OutputStream(java.io.OutputStream) FileSystemOperations(org.gradle.api.file.FileSystemOperations) Action(org.gradle.api.Action) Project(org.gradle.api.Project) Files(java.nio.file.Files) ExecOperations(org.gradle.process.ExecOperations) IOException(java.io.IOException) JavaExecSpec(org.gradle.process.JavaExecSpec) File(java.io.File) StandardCharsets(java.nio.charset.StandardCharsets) UncheckedIOException(java.io.UncheckedIOException) Consumer(java.util.function.Consumer) List(java.util.List) GradleException(org.gradle.api.GradleException) BaseExecSpec(org.gradle.process.BaseExecSpec) Logging(org.gradle.api.logging.Logging) ExecSpec(org.gradle.process.ExecSpec) Pattern(java.util.regex.Pattern) UnsupportedEncodingException(java.io.UnsupportedEncodingException) JavaExecSpec(org.gradle.process.JavaExecSpec) GradleException(org.gradle.api.GradleException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) UncheckedIOException(java.io.UncheckedIOException) ByteArrayOutputStream(java.io.ByteArrayOutputStream) IOException(java.io.IOException) UncheckedIOException(java.io.UncheckedIOException) IOException(java.io.IOException) UncheckedIOException(java.io.UncheckedIOException) GradleException(org.gradle.api.GradleException) UnsupportedEncodingException(java.io.UnsupportedEncodingException)

Aggregations

ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 File (java.io.File)1 IOException (java.io.IOException)1 OutputStream (java.io.OutputStream)1 UncheckedIOException (java.io.UncheckedIOException)1 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 StandardCharsets (java.nio.charset.StandardCharsets)1 Files (java.nio.file.Files)1 Arrays (java.util.Arrays)1 List (java.util.List)1 Consumer (java.util.function.Consumer)1 Function (java.util.function.Function)1 Pattern (java.util.regex.Pattern)1 Inject (javax.inject.Inject)1 Action (org.gradle.api.Action)1 GradleException (org.gradle.api.GradleException)1 Project (org.gradle.api.Project)1 Task (org.gradle.api.Task)1 FileSystemOperations (org.gradle.api.file.FileSystemOperations)1 Logger (org.gradle.api.logging.Logger)1