diff options
Diffstat (limited to 'wikme.scm')
-rw-r--r-- | wikme.scm | 45 |
1 files changed, 29 insertions, 16 deletions
diff --git a/wikme.scm b/wikme.scm index 7f992a3..74d672f 100644 --- a/wikme.scm +++ b/wikme.scm | |||
@@ -1,6 +1,7 @@ | |||
1 | ;;; wikme.scm --- build a wiki from a folder of markdown --- executable | 1 | ;;; wikme.scm --- build a wiki from a folder of markdown --- executable |
2 | 2 | ||
3 | (import (args) | 3 | (import (args) |
4 | (chicken pathname) | ||
4 | (chicken process-context) | 5 | (chicken process-context) |
5 | (chicken port)) | 6 | (chicken port)) |
6 | 7 | ||
@@ -8,32 +9,44 @@ | |||
8 | 9 | ||
9 | 10 | ||
10 | 11 | ||
11 | ;; (make-wiki base-url ; base URL for links | 12 | (define +opts+ |
12 | ;; origin-dir ; origin directory | 13 | (list (args:make-option |
13 | ;; destination-dir ; destination directory | 14 | (u base-url) (optional: "URL") |
14 | ;; page-template ; template for pages | 15 | "Base URL for the generated Wiki.") |
15 | ;; file-transformers ; list of filename transformers | 16 | (args:make-option |
16 | ;; transformers ; list of source transformer functions | 17 | (s source) (optional: "DIRECTORY") |
17 | ;; pages ; list of <page>s | 18 | "Directory containing source files (default: PWD).") |
18 | ;; ) | 19 | (args:make-option |
19 | 20 | (o out) (optional: "DIRECTORY") | |
20 | 21 | "Directory in which to place rendered files (default: PWD/out).") | |
21 | (define options | 22 | (args:make-option |
22 | (list (args:make-option ))) | 23 | (t template) (optional: "FILE") |
24 | "Template file for wiki pages (default: PWD/template.html)."))) | ||
23 | 25 | ||
24 | 26 | ||
25 | 27 | ||
26 | (define (usage) | 28 | (define (usage) |
27 | (with-output-to-port (current-error-port) | 29 | (with-output-to-port (current-error-port) |
28 | (lambda () | 30 | (lambda () |
29 | (print "Usage: " (car (argv)) " [options...] [directory]") | 31 | (print "Usage: " (car (argv)) " [options...]") |
30 | (newline) | 32 | (newline) |
31 | (print (args:usage options)))) | 33 | (print (args:usage +opts+)))) |
32 | (exit 1)) | 34 | (exit 1)) |
33 | 35 | ||
34 | (define (main args) | 36 | (define (main args) |
35 | (receive (options operands) | 37 | (receive (options operands) |
36 | (args:parse args options) | 38 | (args:parse args +opts+) |
37 | #f)) | 39 | (render-wiki |
40 | (directory->wiki | ||
41 | (or (alist-ref 'source options) | ||
42 | (current-directory)) | ||
43 | #:base-url (or (alist-ref 'base-url options) | ||
44 | "https://www.example.com") | ||
45 | #:destination-directory (or (alist-ref 'out options) | ||
46 | (make-pathname | ||
47 | (current-directory) "out")) | ||
48 | #:page-template (or (alist-ref 'template options) | ||
49 | (make-pathname | ||
50 | (current-directory "template.html"))))))) | ||
38 | 51 | ||
39 | (main (command-line-arguments)) | 52 | (main (command-line-arguments)) |