summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArun Isaac2022-03-17 17:00:08 +0530
committerArun Isaac2022-03-18 16:24:01 +0530
commit15e9daaac9af2b2ed6dc34979dd43ab4e172bb72 (patch)
treefc7ea1637601cf20e35188a8b9856443931d2154
parent50898532c81654d834b1070b49d05c46e378a455 (diff)
downloadtissue-15e9daaac9af2b2ed6dc34979dd43ab4e172bb72.tar.gz
tissue-15e9daaac9af2b2ed6dc34979dd43ab4e172bb72.tar.lz
tissue-15e9daaac9af2b2ed6dc34979dd43ab4e172bb72.zip
issue: Record all commits affecting a file, not just how many.
* tissue/issue.scm (<post>): New record type. (file-details): Record all commits affecting a file, not just how many. * bin/tissue (print-issue, print-issue-to-gemtext): Apply length on the output of issue-posts before use. * tissue/web.scm (issue-list-item-markup-writer-action): Apply length on posts before use.
-rwxr-xr-xbin/tissue146
-rw-r--r--tissue/issue.scm16
-rw-r--r--tissue/web.scm3
3 files changed, 90 insertions, 75 deletions
diff --git a/bin/tissue b/bin/tissue
index 9273482..1293891 100755
--- a/bin/tissue
+++ b/bin/tissue
@@ -150,81 +150,83 @@ List recent updates.
(define (print-issue issue-number issue)
"Print ISSUE with number ISSUE-NUMBER."
- (display (magenta (issue-title issue)))
- ;; Highlight keywords containing "bug" or "critical" as whole words
- ;; in red. Else, highlight in blue.
- (unless (null? (issue-keywords issue))
- (display " ")
- (display (string-join
- (map (lambda (keyword)
- ((cond
- ((not (null? (lset-intersection
- string=?
- (string-split keyword #\space)
- (list "bug" "critical"))))
- red-background)
- (else blue-background))
- (string-append " " keyword " ")))
- (issue-keywords issue))
- " ")))
- (unless (null? (issue-assigned issue))
- (display (green (string-append " (assigned: "
- (string-join (issue-assigned issue)
- ", ")
- ")"))))
- (when (> (issue-posts issue) 1)
- (display (string-append " ["
- (number->string (issue-posts issue))
- " posts]")))
- (newline)
- (display (string-append
- (cyan (string-append "#" (number->string issue-number)))
- " opened "
- (cyan (issue-created-relative-date issue))
- " by "
- (cyan (issue-creator issue))))
- (when (> (issue-posts issue) 1)
- (display (string-append (cyan ",")
- " last updated "
- (cyan (issue-last-updated-relative-date issue))
- " by "
- (cyan (issue-last-updater issue)))))
- (unless (zero? (issue-tasks issue))
- (display (string-append (cyan "; ")
- (number->string (issue-completed-tasks issue))
- "/"
- (number->string (issue-tasks issue))
- " tasks done")))
- (newline))
+ (let ((number-of-posts (length (issue-posts issue))))
+ (display (magenta (issue-title issue)))
+ ;; Highlight keywords containing "bug" or "critical" as whole
+ ;; words in red. Else, highlight in blue.
+ (unless (null? (issue-keywords issue))
+ (display " ")
+ (display (string-join
+ (map (lambda (keyword)
+ ((cond
+ ((not (null? (lset-intersection
+ string=?
+ (string-split keyword #\space)
+ (list "bug" "critical"))))
+ red-background)
+ (else blue-background))
+ (string-append " " keyword " ")))
+ (issue-keywords issue))
+ " ")))
+ (unless (null? (issue-assigned issue))
+ (display (green (string-append " (assigned: "
+ (string-join (issue-assigned issue)
+ ", ")
+ ")"))))
+ (when (> number-of-posts 1)
+ (display (string-append " ["
+ (number->string number-of-posts)
+ " posts]")))
+ (newline)
+ (display (string-append
+ (cyan (string-append "#" (number->string issue-number)))
+ " opened "
+ (cyan (issue-created-relative-date issue))
+ " by "
+ (cyan (issue-creator issue))))
+ (when (> number-of-posts 1)
+ (display (string-append (cyan ",")
+ " last updated "
+ (cyan (issue-last-updated-relative-date issue))
+ " by "
+ (cyan (issue-last-updater issue)))))
+ (unless (zero? (issue-tasks issue))
+ (display (string-append (cyan "; ")
+ (number->string (issue-completed-tasks issue))
+ "/"
+ (number->string (issue-tasks issue))
+ " tasks done")))
+ (newline)))
(define (print-issue-to-gemtext issue-number issue)
"Print ISSUE with number ISSUE-NUMBER to gemtext."
- (format #t "# ~a" (issue-title issue))
- (unless (null? (issue-keywords issue))
- (format #t " [~a]"
- (string-join (issue-keywords issue)
- ", ")))
- (unless (null? (issue-assigned issue))
- (format #t " (assigned: ~a)"
- (string-join (issue-assigned issue)
- ", ")))
- (when (> (issue-posts issue) 1)
- (format #t " [~a posts]" (issue-posts issue)))
- (newline)
- (format #t "~a opened ~a by ~a"
- issue-number
- (issue-created-relative-date issue)
- (issue-creator issue))
- (when (> (issue-posts issue) 1)
- (format #t ", last updated ~a by ~a"
- (issue-last-updated-relative-date issue)
- (issue-last-updater issue)))
- (unless (zero? (issue-tasks issue))
- (format #t "; ~a/~a tasks done"
- (issue-completed-tasks issue)
- (issue-tasks issue)))
- (newline)
- (newline))
+ (let ((number-of-posts (length (issue-posts issue))))
+ (format #t "# ~a" (issue-title issue))
+ (unless (null? (issue-keywords issue))
+ (format #t " [~a]"
+ (string-join (issue-keywords issue)
+ ", ")))
+ (unless (null? (issue-assigned issue))
+ (format #t " (assigned: ~a)"
+ (string-join (issue-assigned issue)
+ ", ")))
+ (when (> number-of-posts 1)
+ (format #t " [~a posts]" number-of-posts))
+ (newline)
+ (format #t "~a opened ~a by ~a"
+ issue-number
+ (issue-created-relative-date issue)
+ (issue-creator issue))
+ (when (> number-of-posts 1)
+ (format #t ", last updated ~a by ~a"
+ (issue-last-updated-relative-date issue)
+ (issue-last-updater issue)))
+ (unless (zero? (issue-tasks issue))
+ (format #t "; ~a/~a tasks done"
+ (issue-completed-tasks issue)
+ (issue-tasks issue)))
+ (newline)
+ (newline)))
(define tissue-list
(match-lambda*
diff --git a/tissue/issue.scm b/tissue/issue.scm
index 5b44cd3..7b43caa 100644
--- a/tissue/issue.scm
+++ b/tissue/issue.scm
@@ -43,6 +43,10 @@
issue-tasks
issue-completed-tasks
issue-posts
+ post
+ post-author
+ post-date
+ post-relative-date
issues))
(define-record-type <issue>
@@ -65,6 +69,13 @@
(completed-tasks issue-completed-tasks)
(posts issue-posts))
+(define-record-type <post>
+ (post author date relative-date)
+ post?
+ (author post-author)
+ (date post-date)
+ (relative-date post-relative-date))
+
(define (hashtable-append! hashtable key new-values)
"Append NEW-VALUES to the list of values KEY is associated to in
HASHTABLE. Deduplicate the resulting list if necessary. If KEY is not
@@ -203,8 +214,9 @@ return #f."
(hashtable-set! result 'last-updated-relative-date relative-date))
(hashtable-set! result 'creator author)
(hashtable-set! result 'created-date (unix-time->date date))
- (hashtable-set! result 'created-relative-date relative-date))))))
- rcount get-line port)))
+ (hashtable-set! result 'created-relative-date relative-date)
+ (post author date relative-date))))))
+ rcons get-line port)))
"git" "log" "--follow"
(string-append "--format=format:("
"(author . \"%an\")"
diff --git a/tissue/web.scm b/tissue/web.scm
index fa804a4..f06f58d 100644
--- a/tissue/web.scm
+++ b/tissue/web.scm
@@ -150,7 +150,8 @@ NEW-EXTENSION."
(format " opened ~a by ~a"
(markup-option markup #:created-relative-date)
(markup-option markup #:creator))
- (if (> (markup-option markup #:posts) 1)
+ (if (> (length (markup-option markup #:posts))
+ 1)
(format ", last updated ~a by ~a"
(markup-option markup #:last-updated-relative-date)
(markup-option markup #:last-updater))