From b8610c5aef59305e0148d7ee7288e237c08db709 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Mon, 18 Nov 2019 15:21:36 +0100 Subject: [PATCH] No /bin/bash -c when no os operator passed --- .../internal/project/ProjectCommandExecutor.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/project/ProjectCommandExecutor.java b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/project/ProjectCommandExecutor.java index 0753033d..6c9c09ff 100644 --- a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/project/ProjectCommandExecutor.java +++ b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/project/ProjectCommandExecutor.java @@ -244,6 +244,8 @@ public class ProjectCommandExecutor implements ReleaserPropertiesAware { class ProcessExecutor implements ReleaserPropertiesAware { + private static String[] OS_OPERATORS = { "|", "<", ">", "||", "&&" }; + private static final Logger log = LoggerFactory.getLogger(ProcessExecutor.class); private String workingDir; @@ -289,12 +291,13 @@ class ProcessExecutor implements ReleaserPropertiesAware { } ProcessBuilder builder(String[] commands, String workingDir) { - // TODO: Improve this to not pass arrays in the first place + String[] commandsToRun = commands; String lastArg = String.join(" ", commands); - String[] commandsWithBash = commandToExecute(lastArg); - log.info( - "Will run the command [{}]", Arrays.toString(commandsWithBash)); - return new ProcessBuilder(commandsWithBash).directory(new File(workingDir)) + if (Arrays.stream(OS_OPERATORS).anyMatch(lastArg::contains)) { + commandsToRun = commandToExecute(lastArg); + } + log.info("Will run the command [{}]", Arrays.toString(commandsToRun)); + return new ProcessBuilder(commandsToRun).directory(new File(workingDir)) .inheritIO(); }