File system utilities. This library can be used on the JVM and is also included in babashka (>= 0.2.9).
Babashka is a scripting utility. It's convenient to have cross platform file
system utilities available for scripting. The namespace clojure.java.io
already offers a bunch of useful features, but it predates java.nio. The nio
package isn't that nice to use from Clojure and this library should help with
that.
The main inspirations for this library are clojure.java.io, clj-commons/fs and corasaurus-hex/fs.
See API.md.
(require '[babashka.fs :as fs])
(fs/directory? ".") ;;=> trueThe glob function takes a root path and a pattern. The pattern is interpreted
as documented
here.
(map str (fs/glob "." "**{.clj,cljc}"))Output:
("project.clj" "test/babashka/fs_test.clj" "src/babashka/fs.cljc")The function exec-paths returns all entries from PATH as Paths. To search
all these directories for an executable, e.g. java, you can combine it with
list-dirs which searches files directly in the directories using an (optional)
glob pattern:
(str (first (filter fs/executable? (fs/list-dirs (filter fs/exists? (fs/exec-paths)) "java"))))
"/Users/borkdude/.jenv/versions/11.0/bin/java"For convenience, the above use case is also supported using the which function:
(str (fs/which "java"))
"/Users/borkdude/.jenv/versions/11.0/bin/java"$ bb testCopyright © 2020-2021 Michiel Borkent
Distributed under the EPL License, same as Clojure. See LICENSE.