|
5 | 5 | import java.io.File; |
6 | 6 | import java.io.FileReader; |
7 | 7 | import java.io.FileWriter; |
| 8 | +import java.io.InputStreamReader; |
8 | 9 | import java.net.URLDecoder; |
9 | 10 | import java.util.Random; |
10 | 11 |
|
@@ -154,9 +155,41 @@ public Object execute(Object[] args, Process application, Block block) throws Ex |
154 | 155 |
|
155 | 156 | new Command("exec", "string", "Executes a shell command") { |
156 | 157 | public Object execute(Object[] args, Process application, Block block) throws Exception { |
157 | | - new ProcessBuilder("cmd", "/c", args[0].toString()).inheritIO().start().waitFor(); |
| 158 | + String OS = System.getProperty("os.name", "generic").toLowerCase(); |
| 159 | + |
| 160 | + if ((OS.indexOf("mac") >= 0) || (OS.indexOf("darwin") >= 0)) { |
| 161 | + //mac |
| 162 | + ProcessBuilder builder = new ProcessBuilder("/bin/bash", "-c", args[0].toString()); |
| 163 | + java.lang.Process process = builder.start(); |
| 164 | + BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); |
| 165 | + String line = null; |
| 166 | + while ( (line = reader.readLine()) != null) { |
| 167 | + application.log(line, true); |
| 168 | + } |
| 169 | + |
| 170 | + } else if (OS.indexOf("win") >= 0) { |
| 171 | + //windows |
| 172 | + ProcessBuilder builder = new ProcessBuilder("cmd", "/c", args[0].toString()); |
| 173 | + java.lang.Process process = builder.start(); |
| 174 | + BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); |
| 175 | + String line = null; |
| 176 | + while ( (line = reader.readLine()) != null) { |
| 177 | + application.log(line, true); |
| 178 | + } |
| 179 | + } else if (OS.indexOf("nux") >= 0) { |
| 180 | + //linux |
| 181 | + ProcessBuilder builder = new ProcessBuilder("/bin/bash", "-c", args[0].toString()); |
| 182 | + java.lang.Process process = builder.start(); |
| 183 | + BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); |
| 184 | + String line = null; |
| 185 | + while ( (line = reader.readLine()) != null) { |
| 186 | + application.log(line, true); |
| 187 | + } |
| 188 | + |
| 189 | + } else application.error("Failed to determine operating system"); |
158 | 190 | return null; |
159 | 191 | } |
| 192 | + |
160 | 193 | }, |
161 | 194 |
|
162 | 195 | new Command("script", "string", "Executes a new script sub-process with its parent in- and outputs") { |
|
0 commit comments