coleslaw/plugins/gh-pages.lisp
2018-05-30 22:23:07 -05:00

33 lines
1.1 KiB
Common Lisp

(eval-when (:compile-toplevel :load-toplevel)
(ql:quickload 'puri))
(defpackage :coleslaw-gh-pages
(:use :cl)
(:import-from :puri #:parse-uri #:uri-host)
(:import-from :coleslaw #:*config*
#:deploy
#:deploy-dir
#:domain
#:rel-path)
(:export #:enable))
(in-package :coleslaw-gh-pages)
(defvar *cname* nil
"The domain CNAME for github to serve pages from.")
(defmethod deploy :after (staging)
(let ((blog (rel-path (deploy-dir *config*) ".curr")))
(delete-file (rel-path blog "index.html"))
(cl-fad:copy-file (rel-path blog "1.html") (rel-path blog "index.html"))
(with-open-file (out (rel-path blog "CNAME")
:direction :output
:if-exists :supersede
:if-does-not-exist :create)
(format out "~A~%" *cname*))))
(defun enable (&key cname)
(typecase cname
(string (setf *cname* cname))
(t (setf *cname* (uri-host (parse-uri (domain *config*)))))
(otherwise (error "Not a valid CNAME: ~A" cname))))