chibi-scheme/tools/generate-docs.scm
Locria Cyber f339e95eb6
Fix generate-docs.scm
It is now much slower
2023-06-19 20:20:56 +00:00

67 lines
1.5 KiB
Scheme

(import
(chibi)
(chibi io)
(chibi string)
(chibi process)
(chibi filesystem)
(chibi pathname)
(srfi 18))
(define (walk-directory path)
#;(write (cons "visiting: " path))
(apply append
(map
(lambda (filename)
(define path2 (string-append path "/" filename))
#;(write `(,path2))
(cond
((equal? #\. (string-ref filename 0)) (list))
((file-directory? path2) (walk-directory path2))
(else (list path2))))
(directory-files path))))
(define (filter f xs)
(apply append
(map
(lambda (x)
(if (f x)
(list x)
(list)))
xs)))
(define (filename-filter filename)
(and
(string-suffix? ".sld" filename)
(not (string-contains filename "-test"))))
(define (process x)
(define outfile
(string-append
"doc/"
(substring x 0 (- (string-length x) 4))
".html"))
(display `("Processing" ,x ,outfile))
(newline)
(let ((output (process->string `("./chibi-scheme" "tools/chibi-doc" "--html" ,x))))
(create-directory* (path-directory outfile))
(call-with-output-file
outfile
(lambda (port)
(display output port)))))
(define (fork-map f xs)
(if (pair? xs)
(let* ((x (car xs))
(thread (make-thread (lambda () (f x)))))
(thread-start! thread)
(fork-map f (cdr xs))
(thread-join! thread))
(begin)))
; fork-map is broken. The HTML files produced are empty
(map
process
(filter filename-filter (walk-directory "lib")))