Add Licensing and Contributing
[candle] / src / main / local / local.lisp
index bce245b985783a8ed6b44a282004b675b6a98313..ce5d5ccba9e5fa63a8a95d6f75ebebc29bf7951a 100644 (file)
@@ -1,20 +1,33 @@
+; Copyright 2022 Frank Duncan (frank@consxy.com) under AGPL3.  See distributed LICENSE.txt.
 (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))))