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

gh-pages.lisp 1.1KB

12345678910111213141516171819202122232425262728293031323334
  1. (eval-when (:compile-toplevel :load-toplevel)
  2. (ql:quickload 'puri))
  3. (defpackage :coleslaw-gh-pages
  4. (:use :cl)
  5. (:import-from :puri #:parse-uri #:uri-host)
  6. (:import-from :coleslaw #:*config*
  7. #:deploy
  8. #:deploy-dir
  9. #:domain
  10. #:rel-path)
  11. (:export #:enable))
  12. (in-package :coleslaw-gh-pages)
  13. (defvar *cname* nil
  14. "The domain CNAME for github to serve pages from.")
  15. (defmethod deploy :after (staging)
  16. (let ((blog (truename (rel-path (deploy-dir *config*) ".curr"))))
  17. (delete-file (rel-path blog "index.html"))
  18. (cl-fad:copy-file (rel-path blog "1.html") (rel-path blog "index.html"))
  19. (with-open-file (out (rel-path blog "CNAME")
  20. :direction :output
  21. :if-exists :supersede
  22. :if-does-not-exist :create)
  23. (format out "~A~%" *cname*))))
  24. (defun enable (&key cname)
  25. (typecase cname
  26. (string (setf *cname* cname))
  27. (t (setf *cname* (uri-host (parse-uri (domain *config*)))))
  28. (otherwise (error "Not a valid CNAME: ~A" cname))))