Hi Users of Shell-out,
I'd sometimes like to have the exit status from system commands, so I
patched clojure.contrib.shell-out to accept a :verbose option which,
when turned on, returns a map with :exit, :out, & :err (where :exit's
value is the exit code int, & :out & :err name either byte arrays or
strings).
Anyone else have an interest in such a feature? In particular, would
the option be handy for lancet?
The modified sh function is below for reference, but I'll submit an
issue & patch to contrib if invited to.
Thanks,
Perry
(defn sh
; doc string elided
[& args]
(let [opts (parse-args args)
proc (.exec (Runtime/getRuntime)
(into-array (:cmd opts))
(as-env-string (:env opts))
(as-file (:dir opts)))
in-stream (.getInputStream proc)]
(when (:in opts)
(with-open [osw (OutputStreamWriter. (.getOutputStream proc))]
(.write osw (:in opts))))
(let [stdout (.getInputStream proc)
stderr (.getErrorStream proc)
[[out err] combine-fn]
(if (= (:out opts) :bytes)
[(for [strm [stdout stderr]]
(into-array Byte/TYPE (map byte (stream-seq strm))))
#(into-array Byte/TYPE (concat %1 %2))]
[(for [strm [stdout stderr]]
(apply str (map char (stream-seq
(InputStreamReader. strm (:out
opts))))))
str])
exit-code (.waitFor proc)]
(if (:verbose opts)
{:exit exit-code :out out :err err}
(combine-fn out err)))))
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---