diff --git a/README.md b/README.md index bad1704..fa01d6f 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,6 @@ TODO - **documenation**: scope the readme audience to folks who kind of know what they're doing with servers - **documentation/feature**: use post-update rather than post-receive hook for simplicity - **documentation**: also describe use with post-commit hook -- **feature**: need better detection and rendering of binary files - **feature**: multi-page or collapse-able files list - **feature**: commit log - **feature**: branches and releases (tags) diff --git a/main.scm b/main.scm index fd2b48b..b5cdc32 100755 --- a/main.scm +++ b/main.scm @@ -102,6 +102,13 @@ string-block (define (in-git-directory?) (not (eof-object? (call-with-input-pipe "git rev-parse --git-dir" read-line)))) +(define (is-text? path) + (not (equal? + "-\t-\t" + (call-with-input-pipe + (string-append "git diff 4b825dc642cb6eb9a060e54bf8d69288fbee4904 --numstat HEAD -- " path) + (lambda (port) (read-line port 4)))))) + (define (git-repository->paths-list) (call-with-input-pipe "git ls-tree -r --name-only HEAD" read-lines)) @@ -125,6 +132,8 @@ string-block (display "
") (display-escaped-html (git-file->string source-file)) (display "")) + (define (binary) + (display "
(Binary file)
")) (format #t "~a
" source-file) (case (string->symbol (or source-extension source-filename)) ;; markdown files get rendered in-place, unless there's an error, in which @@ -143,9 +152,11 @@ string-block ((svg) (image-link) (plaintext)) ((gz pack idx) - (display "(Binary file)
")) + (binary)) (else - (plaintext)))) + (if (is-text? source-file) + (plaintext) + (binary))))) (define (display-files-html source-files-list) (display "