55 lines
1.4 KiB
Racket
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)))
|