summaryrefslogtreecommitdiff
path: root/tissue/tissue.scm
diff options
context:
space:
mode:
authorArun Isaac2022-04-14 16:22:23 +0530
committerArun Isaac2022-04-14 16:22:23 +0530
commit85811ab5e6dfbfbcd772eba8a2219061db4c3991 (patch)
treee8045206725e9538625b56ce0ea28138323ae915 /tissue/tissue.scm
parent19bd6994abf5f13a474fdbaba233dd073ee8284e (diff)
downloadtissue-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.scm27
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 ...)