Change local runs to use rsync/candle to capture errors
[candle] / src / main / local / local.lisp
1 (in-package #:candle-local)
2
3 (defvar *rsync-exec*)
4 (defvar *candle-location*)
5
6 (defmethod candle:process-job-in-system ((job-system (eql :local)) job)
7  (let
8   ((work-dir (format nil "~Awork/" candle:*candle-dir*))
9    (out nil)
10    (code nil))
11   (sb-ext:run-program
12    *rsync-exec*
13    (list
14     "-az"
15     "--delete"
16     (candle:project-dir (candle:job-project job))
17     work-dir))
18   (setf out
19    (with-output-to-string (out-str)
20     (setf code
21      (sb-ext:process-exit-code
22       (sb-ext:run-program
23        *candle-location*
24        (list "run")
25        :directory work-dir
26        :output out-str
27        :error out-str
28        :wait t)))))
29   (values (zerop code) out)))