Show repository status.

This commit is contained in:
Dominik Pantůček 2023-04-16 21:38:15 +02:00
parent 7a91e8f4f9
commit 67da5d9be1
2 changed files with 33 additions and 15 deletions

View file

@ -29,6 +29,7 @@
util-git
(
git
git-status
)
(import scheme
@ -79,19 +80,21 @@
;; Returns a dictionary of unknown, modified, deleted and added files
(define (git-status repo)
(let loop ((lines ((git repo) 'status '--porcelain))
(res (make-ldict)))
(if (null? lines)
res
(let* ((line (car lines))
(st (substring line 0 2))
(fname (substring line 4))
(status (or (assoc st git-status-types)
'unknown)))
(loop (cdr lines)
(ldict-set res
status
(cons fname
(ldict-ref res status '()))))))))
(let* ((lines ((git repo) 'status '--porcelain))
(clean? (null? lines)))
(let loop ((lines lines)
(res (make-ldict `((clean . ,clean?)))))
(if (null? lines)
res
(let* ((line (car lines))
(st (substring line 0 2))
(fname (substring line 4))
(status (or (assoc st git-status-types)
'unknown)))
(loop (cdr lines)
(ldict-set res
status
(cons fname
(ldict-ref res status '())))))))))
)