|
271 | 271 | :write (.redirectOutput pb (ProcessBuilder$Redirect/to (io/file (str out-file)))) |
272 | 272 | :append (.redirectOutput pb (ProcessBuilder$Redirect/appendTo (io/file (str out-file)))) |
273 | 273 | :discard (.redirectOutput pb (if-before-jdk8 |
274 | | - (ProcessBuilder$Redirect/to @null-file) |
| 274 | + (ProcessBuilder$Redirect/to @null-file) |
275 | 275 | ProcessBuilder$Redirect/DISCARD)) |
276 | | - nil) |
| 276 | + (when (instance? java.lang.ProcessBuilder$Redirect out) |
| 277 | + (.redirectOutput pb out))) |
277 | 278 | (case err |
278 | 279 | :out (.redirectErrorStream pb true) |
279 | 280 | :inherit (.redirectError pb ProcessBuilder$Redirect/INHERIT) |
280 | 281 | :write (.redirectError pb (ProcessBuilder$Redirect/to (io/file (str err-file)))) |
281 | 282 | :append (.redirectError pb (ProcessBuilder$Redirect/appendTo (io/file (str err-file)))) |
282 | | - :discard (.redirectOutput pb (if-before-jdk8 |
283 | | - (ProcessBuilder$Redirect/to @null-file) |
284 | | - ProcessBuilder$Redirect/DISCARD)) |
285 | | - nil) |
| 283 | + :discard (.redirectError pb (if-before-jdk8 |
| 284 | + (ProcessBuilder$Redirect/to @null-file) |
| 285 | + ProcessBuilder$Redirect/DISCARD)) |
| 286 | + (when (instance? java.lang.ProcessBuilder$Redirect err) |
| 287 | + (.redirectError pb err))) |
286 | 288 | (case in |
287 | 289 | :inherit (.redirectInput pb ProcessBuilder$Redirect/INHERIT) |
288 | 290 | (when (or (instance? java.io.File in) |
|
396 | 398 | stderr (.getErrorStream proc) |
397 | 399 | out (if (and out (or (identical? :string out) |
398 | 400 | (identical? :bytes out) |
399 | | - (not (keyword? out)))) |
| 401 | + (and (not (keyword? out)) |
| 402 | + (not (instance? java.lang.ProcessBuilder$Redirect out))))) |
400 | 403 | (future (copy stdout out out-enc)) |
401 | 404 | stdout) |
402 | 405 | err (if (and err (or (identical? :string err) |
403 | 406 | (identical? :bytes err) |
404 | | - (not (keyword? err)))) |
| 407 | + (and (not (keyword? err)) |
| 408 | + (not (instance? java.lang.ProcessBuilder$Redirect err))))) |
405 | 409 | (future (copy stderr err err-enc)) |
406 | 410 | stderr)] |
407 | 411 | ;; wrap in futures, see https://github.com/clojure/clojure/commit/7def88afe28221ad78f8d045ddbd87b5230cb03e |
|
481 | 485 | For writing output to a file, you can set `:out` and `:err` to a `java.io.File` object, or a keyword: |
482 | 486 | - `:write` + an additional `:out-file`/`:err-file` + file to write to the file. |
483 | 487 | - `:append` + an additional `:out-file`/`:err-file` + file to append to the file. |
| 488 | + To discard `:out` or `:err`, use `:discard` |
484 | 489 | - `:prev`: output from `:prev` will be piped to the input of this process. Overrides `:in`. |
485 | 490 | - `:inherit`: if true, sets `:in`, `:out` and `:err` to `:inherit`. |
486 | 491 | - `:dir`: working directory. |
|
0 commit comments