plugins/versioned.lisp (823 bytes)
1 (defpackage :coleslaw-versioned 2 (:use :cl) 3 (:import-from :coleslaw #:*config* 4 #:deploy-dir 5 #:rel-path 6 #:run-program 7 #:update-symlink)) 8 9 (in-package :coleslaw-versioned) 10 11 (defmethod coleslaw:deploy (staging) 12 (let* ((dest (deploy-dir *config*)) 13 (new-build (rel-path dest "generated/~a" (get-universal-time))) 14 (prev (rel-path dest ".prev")) 15 (curr (rel-path dest ".curr"))) 16 (ensure-directories-exist new-build) 17 (run-program "mv ~a ~a" staging new-build) 18 (when (and (probe-file prev) (truename prev)) 19 (run-program "rm -r ~a" (truename prev))) 20 (when (probe-file curr) 21 (update-symlink prev (truename curr))) 22 (update-symlink curr new-build))) 23 24 (defun enable ())