Script latest-files.scm
;; find the most recently created file from the given glob and dir ;; ;; return #f on no-such-file ;; (define most-recently-created-file (lambda (glob-str dir) (define add-dir-prefix (lambda (file) (if (string? file) (append-dir-file dir file) file))) (let ((files (glob glob-str dir))) (format #t "most-recently-created-file sees files: ~s by globbing ~s in ~s ~%" files glob-str dir) (let loop ((files files) (latest-file #f) (latest-mtime 0)) (cond ((null? files) (add-dir-prefix latest-file)) (else (let ((this-mtime (stat:mtime (stat (add-dir-prefix (car files)))))) (if (> this-mtime latest-mtime) (loop (cdr files) (car files) this-mtime) (loop (cdr files) latest-file latest-mtime))))))))) ;; load latest mtz and pdb files in this directory. ;; (define load-latest-files (lambda () ;; If pdb-file and mtz-file are strings, then try to load them ;; into coot. (define load-latest-pdb-mtz-files (lambda (pdb-file-name mtz-file-name) (if (string? pdb-file-name) (if (file-exists? pdb-file-name) (handle-read-draw-molecule-with-recentre pdb-file-name 0))) (if (string? mtz-file-name) (if (file-exists? mtz-file-name) (auto-read-make-and-draw-maps mtz-file-name))))) ; main line (load-latest-pdb-mtz-files (most-recently-created-file "*.pdb" ".") (most-recently-created-file "*.mtz" "."))))