X-Git-Url: https://code.consxy.com/gitweb/gitweb.cgi?a=blobdiff_plain;f=src%2Fmain%2Flocal%2Flocal.lisp;h=c06bde89459e41e72dfde3b16b1a95a64fe37c72;hb=1f486261df0bbc1d8c10265e4736356934aa1b57;hp=bce245b985783a8ed6b44a282004b675b6a98313;hpb=3fdc12a393fbbd099417398018d2fada7e751358;p=candle diff --git a/src/main/local/local.lisp b/src/main/local/local.lisp index bce245b..c06bde8 100644 --- a/src/main/local/local.lisp +++ b/src/main/local/local.lisp @@ -1,20 +1,32 @@ (in-package #:candle-local) +(defvar *rsync-exec*) +(defvar *candle-location*) + (defmethod candle:process-job-in-system ((job-system (eql :local)) job) (let ((work-dir (format nil "~Awork/" candle:*candle-dir*)) - (result nil)) + (out nil) + (code nil)) (sb-ext:run-program - "/bin/cp" + *rsync-exec* (list - "-ap" + "-az" + "--delete" (candle:project-dir (candle:job-project job)) work-dir)) - (let* - ((*default-pathname-defaults* (pathname work-dir)) - (*error-output* (make-broadcast-stream)) - (output - (with-output-to-string (*standard-output*) - (setf result (candle:run))))) - (sb-ext:delete-directory work-dir :recursive t) - (values result output)))) + (setf out + (with-output-to-string (out-str) + (setf code + (sb-ext:process-exit-code + (sb-ext:run-program + *candle-location* + (list "run") + :directory work-dir + :output out-str + :error out-str + :wait t))))) + (values (zerop code) out))) + +; NOOP as there is no service that needs to be cleaned up +(defmethod candle:shutdown-system ((job-system (eql :local))))