From 0389ed71274bfbc0aa3a7fc6dceed53b578e8f6d Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Sat, 30 May 2020 20:55:43 +0200 Subject: [PATCH] [#457] Add java.nio.file.PathMatcher --- CHANGELOG.md | 1 - src/babashka/impl/classes.clj | 5 ++++- test/babashka/main_test.clj | 5 ++++- test/babashka/scripts/glob.bb | 14 ++++++++++++++ 4 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 test/babashka/scripts/glob.bb diff --git a/CHANGELOG.md b/CHANGELOG.md index 78bbf7cf..d0bb1b84 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,6 @@ For a list of breaking changes, check [here](#breaking-changes) Details about releases prior to v0.1.0 can be found [here](https://github.com/borkdude/babashka/releases). - ## Breaking changes ### v0.0.90 diff --git a/src/babashka/impl/classes.clj b/src/babashka/impl/classes.clj index 91dd4e5a..1b338c94 100644 --- a/src/babashka/impl/classes.clj +++ b/src/babashka/impl/classes.clj @@ -146,6 +146,7 @@ java.nio.file.LinkOption java.nio.file.NoSuchFileException java.nio.file.Path + java.nio.file.PathMatcher java.nio.file.Paths java.nio.file.StandardCopyOption java.nio.file.attribute.FileAttribute @@ -248,7 +249,9 @@ (instance? java.io.OutputStream v) java.io.OutputStream (instance? java.nio.file.FileSystem v) - java.nio.file.FileSystem))))) + java.nio.file.FileSystem + (instance? java.nio.file.PathMatcher v) + java.nio.file.PathMatcher))))) (def class-map (gen-class-map)) diff --git a/test/babashka/main_test.clj b/test/babashka/main_test.clj index 8b7650ba..344f22fe 100644 --- a/test/babashka/main_test.clj +++ b/test/babashka/main_test.clj @@ -350,7 +350,10 @@ (catch java.nio.file.FileAlreadyExistsException _ (java.nio.file.Files/copy p p' (into-array [java.nio.file.StandardCopyOption/REPLACE_EXISTING]))))))" temp-path)) - (is (.exists f2)))) + (is (.exists f2)) + (let [v (bb nil "-f" (.getPath (io/file "test" "babashka" "scripts" "glob.bb")))] + (is (vector? v)) + (is (.exists (io/file (first v))))))) (deftest future-print-test (testing "the root binding of sci/*out*" diff --git a/test/babashka/scripts/glob.bb b/test/babashka/scripts/glob.bb new file mode 100644 index 00000000..41a24d62 --- /dev/null +++ b/test/babashka/scripts/glob.bb @@ -0,0 +1,14 @@ +(require '[clojure.java.io :as io]) + +(defn glob [pattern] + (let [matcher (.getPathMatcher + (java.nio.file.FileSystems/getDefault) + (str "glob:" pattern))] + (into [] + (comp (filter #(.isFile %)) + (filter #(.matches matcher (.normalize (.toPath %)))) + (map #(.relativize (.toURI (io/file ".")) (.toURI %))) + (map #(.getPath %))) + (file-seq (io/file "."))))) + +(glob "*/doc/*.md") ;;=> ["sci/doc/libsci.md" "babashka.nrepl/doc/intro.md"]