site.scm (1310B)
1 (define-module (grug site) 2 #:use-module (srfi srfi-9) 3 #:use-module (srfi srfi-26) 4 #:use-module (grug readers) 5 #:use-module (grug utils) 6 #:export (site 7 site? 8 site-build-directory 9 site-metadata 10 site-reader 11 site-builders 12 build-site 13 publish-site)) 14 15 (define-record-type <site> 16 (make-site build-directory metadata reader builders publishers) 17 site? 18 (build-directory site-build-directory) 19 (metadata site-metadata) 20 (reader site-reader) 21 (builders site-builders) 22 (publishers site-publishers)) 23 24 (define* (site #:key 25 (build-directory "site") 26 (metadata `((title . "Grug Site"))) 27 (reader cmark) 28 (builders '()) 29 (publishers '())) 30 (make-site build-directory metadata reader builders publishers)) 31 32 ;; TODO: Make one simple interface for grug commands 33 34 (define (build-site site) 35 ;; Reset site build directory 36 (when (file-exists? (site-build-directory site)) 37 (delete-file-recursively (site-build-directory site))) 38 (mkdir (site-build-directory site)) 39 ;; Run builders for site 40 (for-each (cut <> site) (site-builders site))) 41 42 (define (publish-site site) 43 ;; Run publishers for site 44 (for-each (cut <> site) (site-publishers site))) 45