diff --git a/src/export-web-static.scm b/src/export-web-static.scm index 23f390a..ce06129 100644 --- a/src/export-web-static.scm +++ b/src/export-web-static.scm @@ -36,6 +36,7 @@ (chicken format) (chicken pathname) (chicken string) + (chicken file) brmember util-dir mbase @@ -159,11 +160,25 @@ (lambda () (print-html-member mr))))) + ;; Removes all generated files which do not belong to any member + (define (clean-members-files mb dir) + (let loop ((fns (directory dir))) + (when (not (null? fns)) + (let* ((fn (car fns)) + (utl (string-split fn ".")) + (username (car utl)) + (mr (find-member-by-nick mb username))) + (when (or (not mr) + (brmember-destroyed? mr)) + (delete-file (make-pathname dir fn))) + (loop (cdr fns)))))) + ;; Generates all members in given directory (define (gen-html-members mb dir) (ensure-directory dir) (with-mbase-progress% mb dir mr - (gen-html-member mr dir))) + (gen-html-member mr dir)) + (clean-members-files mb dir)) )