This is an automated email from the ASF dual-hosted git repository.

benjobs pushed a commit to branch dev-2.1.2
in repository https://gitbox.apache.org/repos/asf/incubator-streampark.git


The following commit(s) were added to refs/heads/dev-2.1.2 by this push:
     new b1132fe13 [Improve] maven build args improvement (#3368)
b1132fe13 is described below

commit b1132fe1368c49ea0fce2a46d1dfc58031ace089
Author: benjobs <[email protected]>
AuthorDate: Thu Nov 30 22:01:49 2023 +0800

    [Improve] maven build args improvement (#3368)
    
    * [Improve] maven build args improvement
    
    ---------
    
    Co-authored-by: benjobs <[email protected]>
---
 .../streampark/console/core/entity/Project.java    | 31 ++++++++++++++++----
 .../console/base/util/FileUtilsTest.java           | 34 ++++++++++++++++++++++
 2 files changed, 59 insertions(+), 6 deletions(-)

diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/Project.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/Project.java
index 875c5a317..c5c37b172 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/Project.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/Project.java
@@ -44,7 +44,7 @@ import org.eclipse.jgit.lib.Constants;
 import java.io.File;
 import java.io.IOException;
 import java.io.Serializable;
-import java.util.Arrays;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.jar.JarFile;
@@ -216,7 +216,7 @@ public class Project implements Serializable {
     StringBuilder cmdBuffer = new StringBuilder(mvn).append(" clean package 
-DskipTests ");
 
     if (StringUtils.isNotBlank(this.buildArgs)) {
-      List<String> dangerArgs = getLogicalOperators(this.buildArgs);
+      List<String> dangerArgs = getDangerArgs(this.buildArgs);
       if (dangerArgs.isEmpty()) {
         cmdBuffer.append(this.buildArgs.trim());
       } else {
@@ -229,7 +229,7 @@ public class Project implements Serializable {
 
     String setting = 
InternalConfigHolder.get(CommonConfig.MAVEN_SETTINGS_PATH());
     if (StringUtils.isNotBlank(setting)) {
-      List<String> dangerArgs = getLogicalOperators(setting);
+      List<String> dangerArgs = getDangerArgs(setting);
       if (dangerArgs.isEmpty()) {
         File file = new File(setting);
         if (file.exists() && file.isFile()) {
@@ -248,9 +248,28 @@ public class Project implements Serializable {
     return cmdBuffer.toString();
   }
 
-  private List<String> getLogicalOperators(String param) {
-    List<String> dangerArgs = Arrays.asList(" || ", " | ", " && ", " & ");
-    return 
dangerArgs.stream().filter(param::contains).collect(Collectors.toList());
+  private List<String> getDangerArgs(String param) {
+    String[] args = param.split("\\s+");
+    List<String> dangerArgs = new ArrayList<>();
+    for (String arg : args) {
+      if (arg.length() == 1) {
+        if (arg.equals("|")) {
+          dangerArgs.add("|");
+        }
+        if (arg.equals("&")) {
+          dangerArgs.add("&");
+        }
+      } else {
+        arg = arg.substring(0, 2);
+        if (arg.equals("||")) {
+          dangerArgs.add("||");
+        }
+        if (arg.equals("&&")) {
+          dangerArgs.add("&&");
+        }
+      }
+    }
+    return dangerArgs;
   }
 
   @JsonIgnore
diff --git 
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/base/util/FileUtilsTest.java
 
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/base/util/FileUtilsTest.java
index 57db8581c..59e0e4baf 100644
--- 
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/base/util/FileUtilsTest.java
+++ 
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/base/util/FileUtilsTest.java
@@ -26,6 +26,8 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Random;
 
 /** Test for {@link FileUtils} */
@@ -106,4 +108,36 @@ class FileUtilsTest {
     }
     Assertions.assertArrayEquals(fileBytes, readBytes);
   }
+
+  @Test
+  public void testDangerArgs() {
+    String param = "mvn clean || echo \"ccc\" && rm -rf /* ";
+    List<String> dangerArgs = getDangerArgs(param);
+    Assertions.assertEquals(dangerArgs.size(), 2);
+  }
+
+  private List<String> getDangerArgs(String param) {
+    String[] args = param.split("\\s+");
+    List<String> result = new ArrayList<>();
+
+    for (String arg : args) {
+      if (arg.length() == 1) {
+        if (arg.equals("|")) {
+          result.add("|");
+        }
+        if (arg.equals("&")) {
+          result.add("&");
+        }
+      } else {
+        arg = arg.substring(0, 2);
+        if (arg.equals("||")) {
+          result.add("||");
+        }
+        if (arg.equals("&&")) {
+          result.add("&&");
+        }
+      }
+    }
+    return result;
+  }
 }

Reply via email to