Use robocopy on Windows

Rsync treats C:/ type path as remote and cowardly refuses to copy directories. Robocopy knows no fear.
This commit is contained in:
egao1980 2020-04-14 18:34:47 +01:00
parent d1e30f150d
commit c2a107cb3e
2 changed files with 25 additions and 1 deletions

21
plugins/robocopy.lisp Normal file
View file

@ -0,0 +1,21 @@
(defpackage :coleslaw-robocopy
(:use :cl)
(:import-from :coleslaw #:*config*
#:deploy
#:deploy-dir)
(:export #:enable))
(in-package :coleslaw-robocopy)
(defvar *args* nil)
(defmethod deploy (staging)
(coleslaw::run-program
"(robocopy ~A ~A ~{~A~^ ~}) ^& IF %ERRORLEVEL% LEQ 1 exit 0"
(merge-pathnames staging)
(merge-pathnames (deploy-dir *config*))
*args*))
(defun enable (&rest args)
(setf *args* args))

View file

@ -35,7 +35,10 @@
(merge-pathnames "js" theme-dir)
(repo-path "static")))
(when (probe-file dir)
(run-program "rsync --delete -raz ~a ." dir))))
(if (uiop:os-windows-p)
(run-program "(robocopy ~a ~a /MIR /IS) ^& IF %ERRORLEVEL% LEQ 1 exit 0" dir (path:basename dir))
(run-program "rsync --delete -raz ~a ." dir))
)))
(do-subclasses (ctype content)
(publish ctype))
(do-subclasses (itype index)