Files
2026-06-25 21:52:17 +02:00

55 lines
1.4 KiB
Racket

#lang racket/base
(require racket/date
racket/format
racket/path
racket/string
)
(provide date->yyyy-mm-dd
now
get-cover-file
basename
basedir
not-hidden?
)
(define (now)
(seconds->date (current-seconds)))
(define (date->yyyy-mm-dd d)
(format "~a-~a-~a"
(date-year d)
(~r (date-month d) #:min-width 2 #:pad-string "0")
(~r (date-day d) #:min-width 2 #:pad-string "0")))
(define (get-cover-file path)
(let-values (((base name dir) (split-path path)))
(let ((names '((jpg "cover.jpg") (jpg "cover.jpeg")
(jpg "folder.jpg") (jpg "folder.jpeg")
(png "cover.png") (png "folder.png"))))
(letrec ((f (λ (l)
(if (null? l)
(values #f #f)
(if (file-exists? (build-path base (cadar l)))
(values (caar l) (build-path base (cadar l)))
(f (cdr l)))))))
(f names)))))
(define (basename path)
(file-name-from-path path))
(define (basedir path)
(path-only path))
(define (hidden-path? p)
(for/or ([part (in-list (explode-path p))])
(and (path? part)
(let ([s (path->string part)])
(and (string-prefix? s ".")
(not (member s '("." ".."))))))))
(define (not-hidden? path)
(not (hidden-path? path)))