summaryrefslogtreecommitdiff
path: root/tissue/issue.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/issue.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/issue.scm')
-rw-r--r--tissue/issue.scm59
1 files changed, 30 insertions, 29 deletions
diff --git a/tissue/issue.scm b/tissue/issue.scm
index f7dcef9..72d3d9c 100644
--- a/tissue/issue.scm
+++ b/tissue/issue.scm
@@ -29,7 +29,8 @@
#:use-module (ice-9 regex)
#:use-module (tissue git)
#:use-module (tissue utils)
- #:export (%aliases
+ #:export (%issue-files
+ %aliases
issue
issue-file
issue-title
@@ -52,6 +53,9 @@
authors
issues))
+(define %issue-files
+ (make-parameter #f))
+
(define %aliases
(make-parameter #f))
@@ -268,34 +272,31 @@ in (tissue tissue). If no alias is found, NAME is returned as such."
;; editors tend to create hidden files while editing, and we want to
;; avoid them.
(sort (filter-map (lambda (file)
- (and (string-suffix? ".gmi" file)
- (not (string=? (basename file) "README.gmi"))
- (not (string-prefix? "." (basename file)))
- (let* ((file-details (file-details file))
- ;; Downcase keywords to make them
- ;; case-insensitive.
- (all-keywords (map string-downcase
- (hashtable-ref file-details 'keywords '()))))
- (issue file
- ;; Fallback to filename if title has no alphabetic
- ;; characters.
- (let ((title (hashtable-ref file-details 'title "")))
- (if (string-any char-set:letter title) title file))
- (hashtable-ref file-details 'creator #f)
- (hashtable-ref file-details 'created-date #f)
- (hashtable-ref file-details 'created-relative-date #f)
- (hashtable-ref file-details 'last-updater #f)
- (hashtable-ref file-details 'last-updated-date #f)
- (hashtable-ref file-details 'last-updated-relative-date #f)
- (hashtable-ref file-details 'assigned '())
- ;; "closed" is a special keyword to indicate
- ;; the open/closed status of an issue.
- (delete "closed" all-keywords)
- (not (member "closed" all-keywords))
- (hashtable-ref file-details 'tasks 0)
- (hashtable-ref file-details 'completed-tasks 0)
- (hashtable-ref file-details 'posts #f)))))
- (git-tracked-files))
+ (let* ((file-details (file-details file))
+ ;; Downcase keywords to make them
+ ;; case-insensitive.
+ (all-keywords (map string-downcase
+ (hashtable-ref file-details 'keywords '()))))
+ (issue file
+ ;; Fallback to filename if title has no alphabetic
+ ;; characters.
+ (let ((title (hashtable-ref file-details 'title "")))
+ (if (string-any char-set:letter title) title file))
+ (hashtable-ref file-details 'creator #f)
+ (hashtable-ref file-details 'created-date #f)
+ (hashtable-ref file-details 'created-relative-date #f)
+ (hashtable-ref file-details 'last-updater #f)
+ (hashtable-ref file-details 'last-updated-date #f)
+ (hashtable-ref file-details 'last-updated-relative-date #f)
+ (hashtable-ref file-details 'assigned '())
+ ;; "closed" is a special keyword to indicate
+ ;; the open/closed status of an issue.
+ (delete "closed" all-keywords)
+ (not (member "closed" all-keywords))
+ (hashtable-ref file-details 'tasks 0)
+ (hashtable-ref file-details 'completed-tasks 0)
+ (hashtable-ref file-details 'posts #f))))
+ (%issue-files))
(lambda (issue1 issue2)
(time<? (date->time-monotonic (issue-created-date issue1))
(date->time-monotonic (issue-created-date issue2))))))))