diff --git a/main.lisp b/main.lisp index 7879332ad4fb97fc938332741047f7b538930f84..a41ffad08ce30b60d35b12a4a12684e44bf584bf 100644 --- a/main.lisp +++ b/main.lisp @@ -1,10 +1,11 @@ ;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*- (in-package :cl-site) +(require :asdf) ;; Locations for various files -(defparameter *PAGES-DIR* "content/") -(defparameter *LAYOUT-DIR* "layout/templates/") -(defparameter *OUTPUT-DIR* "output/") +(defparameter *PAGES-DIR* (asdf:system-relative-pathname :cl-site "content/")) +(defparameter *LAYOUT-DIR* (asdf:system-relative-pathname :cl-site "layout/templates/")) +(defparameter *OUTPUT-DIR* (asdf:system-relative-pathname :cl-site "output/")) (defparameter *PRIVATE-KEYS* '(:slug :content)) (defparameter *PAGES* @@ -18,8 +19,11 @@ (defun make-path (prefix page) - (pathname (concatenate 'string - prefix (cdr (assoc :content page))))) + (let ((path (cdr (assoc :content page)))) + (if (pathnamep prefix) + (merge-pathnames path prefix) + (pathname (concatenate 'string + prefix path))))) (defun file-to-string (filepath) (with-open-file (stream filepath) @@ -40,7 +44,6 @@ (mustache:render template-path page-context output-stream)))) (defun make-site () - (let - ((template-path (pathname (concatenate 'string *LAYOUT-DIR* *DEFAULT-PAGE-TEMPLATE*)))) - (loop for page in *PAGES* - do (render-page page template-path)))) + (let ((template-path (pathname (merge-pathnames *LAYOUT-DIR* *DEFAULT-PAGE-TEMPLATE*)))) + (loop for page in *PAGES* + do (render-page page template-path))))