diff options
author | Arun Isaac | 2022-04-14 16:22:23 +0530 |
---|---|---|
committer | Arun Isaac | 2022-04-14 16:22:23 +0530 |
commit | 85811ab5e6dfbfbcd772eba8a2219061db4c3991 (patch) | |
tree | e8045206725e9538625b56ce0ea28138323ae915 /tissue/tissue.scm | |
parent | 19bd6994abf5f13a474fdbaba233dd073ee8284e (diff) | |
download | tissue-85811ab5e6dfbfbcd772eba8a2219061db4c3991.tar.gz tissue-85811ab5e6dfbfbcd772eba8a2219061db4c3991.tar.lz tissue-85811ab5e6dfbfbcd772eba8a2219061db4c3991.zip |
tissue: Add #:issue-files configuration parameter.
* tissue/tissue.scm: Import (tissue git).
(<tissue-configuration>)[issue-files]: New field.
(gemtext-files-in-directory): New function.
(tissue-configuration): Add #:issue-files keyword argument.
* tissue/issue.scm (%issue-files): New public parameter.
(issues): Read issues only from files in %issue-files.
* bin/tissue (main): Parameterize %issue-files.
Diffstat (limited to 'tissue/tissue.scm')
-rw-r--r-- | tissue/tissue.scm | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/tissue/tissue.scm b/tissue/tissue.scm index 4af4886..194587d 100644 --- a/tissue/tissue.scm +++ b/tissue/tissue.scm @@ -20,19 +20,23 @@ #:use-module (srfi srfi-1) #:use-module (srfi srfi-9) #:use-module (srfi srfi-71) + #:use-module (tissue git) #:export (tissue-configuration tissue-configuration? tissue-configuration-project tissue-configuration-aliases + tissue-configuration-issue-files tissue-configuration-web-css tissue-configuration-web-tags-path - tissue-configuration-web-files)) + tissue-configuration-web-files + gemtext-files-in-directory)) (define-record-type <tissue-configuration> - (make-tissue-configuration project aliases web-css web-tags-path web-files) + (make-tissue-configuration project aliases issue-files web-css web-tags-path web-files) tissue-configuration? (project tissue-configuration-project) (aliases tissue-configuration-aliases) + (issue-files tissue-configuration-issue-files) (web-css tissue-configuration-web-css) (web-tags-path tissue-configuration-web-tags-path) (web-files delayed-tissue-configuration-web-files)) @@ -40,6 +44,17 @@ (define tissue-configuration-web-files (compose force delayed-tissue-configuration-web-files)) +(define* (gemtext-files-in-directory #:optional directory) + "Return a list of all gemtext files in DIRECTORY tracked in the +current git repository. If DIRECTORY is #f, return the list of all +gemtext files tracked in the current git repository regardless of +which directory they are in." + (filter (lambda (filename) + (and (or (not directory) + (string-prefix? directory filename)) + (string-suffix? ".gmi" filename))) + (git-tracked-files))) + (define-syntax tissue-configuration (lambda (x) (syntax-case x () @@ -48,7 +63,9 @@ (eq? (syntax->datum arg) #:web-files)) #'(args ...)))) - #`(apply (lambda* (#:key project (aliases '()) web-css (web-tags-path "/tags") (web-files '())) + #`(apply (lambda* (#:key project (aliases '()) + (issue-files (gemtext-files-in-directory)) + web-css (web-tags-path "/tags") (web-files '())) "PROJECT is the name of the project. It is used in the title of the generated web pages, among other places. @@ -56,6 +73,8 @@ ALIASES is a list of aliases used to refer to authors in the repository. Each element is in turn a list of aliases an author goes by, the first of which is the canonical name of that author. +ISSUE-FILES is a list of files that pertain to issues. + WEB-CSS is the path to a CSS stylesheet. It is relative to the document root and must begin with a /. If it is #f, no stylesheet is used in the generated web pages. @@ -65,7 +84,7 @@ per-tag issue listings are put. It must begin with a /. WEB-FILES is a list of <file> objects representing files to be written to the web output." - (make-tissue-configuration project aliases web-css web-tags-path web-files)) + (make-tissue-configuration project aliases issue-files web-css web-tags-path web-files)) (list #,@(append before (syntax-case after () ((web-files-key web-files rest ...) |