Skip to content
Snippets Groups Projects
Commit ecd21c67 authored by Francois-Rene Rideau's avatar Francois-Rene Rideau
Browse files

Support :output :interactively as a hack on CCL and SBCL.

parent 8914d215
No related branches found
No related tags found
No related merge requests found
......@@ -28,26 +28,42 @@
spec
`(ssh ,host ,(print-process-spec spec))))
(deftype direct-command-spec ()
'(and command-spec (satisfies direct-command-spec-p)))
(defun direct-command-spec-p (spec)
(and (typep spec 'command-spec)
(null (command-redirections spec))))
(defun run-spec (spec &key ignore-error-status output)
(let ((command
(if (and (typep spec 'command-spec)
(null (command-redirections spec)))
(command-arguments spec)
(print-process-spec spec))))
(if (eq output t)
(run-program/ command :ignore-error-status ignore-error-status)
(run-program/ command
:ignore-error-status ignore-error-status
:output output))))
(let* ((command
(if (consp spec)
(parse-process-spec spec)
spec))
(command
(etypecase command
(direct-command-spec
(command-arguments spec))
(process-spec
(print-process-spec spec))
(string
spec))))
(case output
((t)
(run-program/ command :ignore-error-status ignore-error-status))
((:interactively)
(run-program/interactively
command :ignore-error-status ignore-error-status))
(otherwise
(run-program/
command :ignore-error-status ignore-error-status :output output)))))
(defun run-process-spec (spec &rest keys &key ignore-error-status output host backend)
(etypecase host
(null
(etypecase spec
(string
(if (eq output t)
(run-program/ spec :ignore-error-status ignore-error-status)
(apply 'run-program/ spec keys)))
(run-spec spec :ignore-error-status ignore-error-status :output output))
(cons
(apply 'run-process-spec (parse-process-spec spec) keys))
(process-spec
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment