Flexible Lisp Blogware. Fork for personal use. Mirrored from https://github.com/kingcons/coleslaw originally.

versioned.lisp 823B

12345678910111213141516171819202122232425
  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. (in-package :coleslaw-versioned)
  9. (defmethod coleslaw:deploy (staging)
  10. (let* ((dest (deploy-dir *config*))
  11. (new-build (rel-path dest "generated/~a" (get-universal-time)))
  12. (prev (rel-path dest ".prev"))
  13. (curr (rel-path dest ".curr")))
  14. (ensure-directories-exist new-build)
  15. (run-program "mv ~a ~a" staging new-build)
  16. (when (and (probe-file prev) (truename prev))
  17. (run-program "rm -r ~a" (truename prev)))
  18. (when (probe-file curr)
  19. (update-symlink prev (truename curr)))
  20. (update-symlink curr new-build)))
  21. (defun enable ())