diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2022-04-12 13:18:37 +0200 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2022-04-21 15:16:42 +0200 |
commit | f5884222a95456aadc9684efd375fc77887e54a5 (patch) | |
tree | 7bffb41c8b017e87b1686010d46d813620da58fd /scripts/all-modules.scm | |
parent | Fix comment on unval. (diff) | |
download | calp-f5884222a95456aadc9684efd375fc77887e54a5.tar.gz calp-f5884222a95456aadc9684efd375fc77887e54a5.tar.xz |
Introduce fs-find.
Diffstat (limited to '')
-rw-r--r-- | scripts/all-modules.scm | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/scripts/all-modules.scm b/scripts/all-modules.scm index 2d6b068c..ad6d3b72 100644 --- a/scripts/all-modules.scm +++ b/scripts/all-modules.scm @@ -3,22 +3,29 @@ :use-module (srfi srfi-1) :use-module (ice-9 ftw) :use-module (ice-9 match) - :export (all-files-and-modules-under-directory all-modules-under-directory)) - -(define (all-files-and-modules-under-directory dir) - (define re (make-regexp "\\.scm$")) + :use-module (hnh util path) + :export (all-files-and-modules-under-directory + all-modules-under-directory + fs-find-base fs-find)) +(define (fs-find dir) (define files '()) + (ftw dir (lambda args (set! files (cons args files)) #t)) + files) - (ftw dir (lambda (filename statinfo flag) - (cond ((and (eq? flag 'regular) - (regexp-exec re filename)) - => (lambda (m) - (set! files (cons filename files)) - #t - )) - (else #t)))) +;; (define (fs-find proc dir) +;; (filter proc (fs-find-base dir))) + +(define (all-files-and-modules-under-directory dir) + (define re (make-regexp "\\.scm$")) + (define files + (map car + (filter (match-lambda ((filename _ 'regular) + (and (regexp-exec re filename) + (not (file-hidden? filename)))) + (_ #f)) + (fs-find dir)))) (map (lambda (file) (list file |