Compare commits

...

5 commits
master ... fs

Author SHA1 Message Date
Michiel Borkent
6815f661a9 Update fs 2021-02-01 10:43:27 +01:00
Michiel Borkent
7fae43eef1 Add tests 2021-01-31 22:56:57 +01:00
Michiel Borkent
e7fecf3417 wip 2021-01-31 21:24:41 +01:00
Michiel Borkent
246de627aa fs 2021-01-31 20:54:16 +01:00
Michiel Borkent
a4ceebe209 fs 2021-01-31 20:54:08 +01:00
9 changed files with 141 additions and 9 deletions

View file

@ -12,7 +12,7 @@
"depstar/src" "process/src"
"deps.clj/src" "deps.clj/resources"
"resources" "sci/resources"],
:deps {org.clojure/clojure {:mvn/version "1.10.2-alpha2"},
:deps {org.clojure/clojure {:mvn/version "1.10.2"},
borkdude/sci {:local/root "sci"}
borkdude/graal.locking {:mvn/version "0.0.2"},
org.clojure/core.async {:mvn/version "1.3.610"},
@ -32,7 +32,9 @@
babashka/clojure-lanterna {:mvn/version "0.9.8-SNAPSHOT"}
org.clojure/math.combinatorics {:mvn/version "0.1.6"}
org.clojure/core.match {:mvn/version "1.0.0"}
hiccup/hiccup {:mvn/version "2.0.0-alpha2"}}
hiccup/hiccup {:mvn/version "2.0.0-alpha2"}
babashka/fs {:local/root "fs"}
babashka/curl {:local/root "babashka.curl"}}
:aliases {:main
{:main-opts ["-m" "babashka.main"]}
:profile
@ -52,7 +54,6 @@
:sha "f902d2c43121f9e1c48603d6eb99f5900eb6a9f6"}
weavejester/medley {:git/url "https://github.com/weavejester/medley"
:sha "a4e5fb5383f5c0d83cb2d005181a35b76d8a136d"}
babashka/babasha.curl {:local/root "babashka.curl"}
cprop/cprop {:mvn/version "0.1.16"}
comb/comb {:mvn/version "0.1.1"}
mvxcvi/arrangement {:mvn/version "1.2.0"}

View file

@ -1 +0,0 @@
borkdude@MBP2019.local.17736

2
fs

@ -1 +1 @@
Subproject commit b008b2d6ea64e49bf76066b7f057ae4638534e35
Subproject commit 3839aca1aefb816e863327a206854a53962965c9

View file

@ -8,13 +8,13 @@
:license {:name "Eclipse Public License 1.0"
:url "http://opensource.org/licenses/eclipse-1.0.php"}
:source-paths ["src" "sci/src" "babashka.curl/src" "pods/src"
"babashka.nrepl/src" "depstar/src" "process/src"
"deps.clj/src" "deps.clj/resources"]
"fs/src" "babashka.nrepl/src" "depstar/src"
"process/src" "deps.clj/src" "deps.clj/resources"]
;; for debugging Reflector.java code:
;; :java-source-paths ["sci/reflector/src-java"]
:java-source-paths ["src-java"]
:resource-paths ["resources" "sci/resources"]
:dependencies [[org.clojure/clojure "1.10.2-alpha2"]
:dependencies [[org.clojure/clojure "1.10.2"]
[borkdude/edamame "0.0.11-alpha.28"]
[borkdude/graal.locking "0.0.2"]
[org.clojure/tools.cli "1.0.194"]

View file

@ -37,3 +37,7 @@ lein test :only babashka.pod-test
export BABASHKA_SOCKET_REPL_TEST=true
lein test :only babashka.impl.socket-repl-test
unset BABASHKA_PRELOADS
unset BABASHKA_CLASSPATH
unset BABASHKA_PRELOADS_TEST

50
src/babashka/impl/fs.clj Normal file
View file

@ -0,0 +1,50 @@
(ns babashka.impl.fs
(:require [babashka.fs :as fs]
[sci.core :as sci]))
(def fns (sci/create-ns 'babashka.fs nil))
#_(doseq [k (sort (keys (ns-publics 'babashka.fs)))]
(println (str "'" k) (format "(sci/copy-var fs/%s fns)" k)))
(def fs-namespace
{'absolute? (sci/copy-var fs/absolute? fns)
'absolutize (sci/copy-var fs/absolutize fns)
'components (sci/copy-var fs/components fns)
'copy (sci/copy-var fs/copy fns)
'copy-tree (sci/copy-var fs/copy-tree fns)
'create-dir (sci/copy-var fs/create-dir fns)
'create-dirs (sci/copy-var fs/create-dirs fns)
'create-sym-link (sci/copy-var fs/create-sym-link fns)
'create-temp-dir (sci/copy-var fs/create-temp-dir fns)
'delete (sci/copy-var fs/delete fns)
'delete-if-exists (sci/copy-var fs/delete-if-exists fns)
'delete-on-exit (sci/copy-var fs/delete-on-exit fns)
'delete-tree (sci/copy-var fs/delete-tree fns)
'directory-stream (sci/copy-var fs/directory-stream fns)
'directory? (sci/copy-var fs/directory? fns)
'executable? (sci/copy-var fs/executable? fns)
'exists? (sci/copy-var fs/exists? fns)
'file (sci/copy-var fs/file fns)
'file-name (sci/copy-var fs/file-name fns)
'file-separator (sci/copy-var fs/file-separator fns)
'glob (sci/copy-var fs/glob fns)
'hidden? (sci/copy-var fs/hidden? fns)
'last-modified (sci/copy-var fs/last-modified fns)
'list-dir (sci/copy-var fs/list-dir fns)
'move (sci/copy-var fs/move fns)
'normalize (sci/copy-var fs/normalize fns)
'parent (sci/copy-var fs/parent fns)
'path (sci/copy-var fs/path fns)
'path-separator (sci/copy-var fs/path-separator fns)
'posix->str (sci/copy-var fs/posix->str fns)
'posix-file-permissions (sci/copy-var fs/posix-file-permissions fns)
'readable? (sci/copy-var fs/readable? fns)
'real-path (sci/copy-var fs/real-path fns)
'relative? (sci/copy-var fs/relative? fns)
'relativize (sci/copy-var fs/relativize fns)
'set-posix-file-permissions (sci/copy-var fs/set-posix-file-permissions fns)
'size (sci/copy-var fs/size fns)
'str->posix (sci/copy-var fs/str->posix fns)
'walk-file-tree (sci/copy-var fs/walk-file-tree fns)
'writable? (sci/copy-var fs/writable? fns)})

View file

@ -21,6 +21,7 @@
[babashka.impl.deps :as deps :refer [deps-namespace]]
[babashka.impl.error-handler :refer [error-handler]]
[babashka.impl.features :as features]
[babashka.impl.fs :refer [fs-namespace]]
[babashka.impl.pods :as pods]
[babashka.impl.pprint :refer [pprint-namespace]]
[babashka.impl.process :refer [process-namespace]]
@ -382,7 +383,8 @@ Use -- to separate script command line args from bb command line args.
'clojure.core.protocols protocols-namespace
'babashka.process process-namespace
'clojure.core.server clojure-core-server
'babashka.deps deps-namespace}
'babashka.deps deps-namespace
'babashka.fs fs-namespace}
features/xml? (assoc 'clojure.data.xml @(resolve 'babashka.impl.xml/xml-namespace))
features/yaml? (assoc 'clj-yaml.core @(resolve 'babashka.impl.yaml/yaml-namespace)
'flatland.ordered.map @(resolve 'babashka.impl.ordered/ordered-map-ns))

View file

@ -0,0 +1,70 @@
(ns babashka.fs-test
(:require [babashka.fs :as fs]
[clojure.java.io :as io]
[clojure.string :as str]
[clojure.test :refer [deftest is]]))
(def cwd (fs/real-path "fs"))
(defn temp-dir []
(-> (fs/create-temp-dir)
(fs/delete-on-exit)))
(deftest glob-test
(is (pos? (count (fs/glob cwd "**.{clj,cljc}")))))
(deftest file-name-test
(is (= "fs" (fs/file-name cwd)))
(is (= "fs" (fs/file-name (fs/file cwd))))
(is (= "fs" (fs/file-name (fs/path cwd)))))
(deftest path-test
(let [p (fs/path "foo" "bar" (io/file "baz"))]
(is (instance? java.nio.file.Path p))
(is (= "foo/bar/baz" (str p)))))
(deftest file-test
(let [f (fs/file "foo" "bar" (fs/path "baz"))]
(is (instance? java.io.File f))
(is (= "foo/bar/baz" (str f)))))
(deftest copy-test
(let [tmp-dir (temp-dir)]
(fs/copy-tree "fs" tmp-dir)
(let [cur-dir-count (count (fs/glob "fs" "**" #{:hidden}))
tmp-dir-count (count (fs/glob tmp-dir "**" #{:hidden}))]
(is (pos? cur-dir-count))
(is (= cur-dir-count tmp-dir-count)))))
(deftest components-test
(let [paths (map str (fs/components cwd))]
(is (= "fs" (last paths)))
(is (> (count paths) 1))))
(deftest list-dir-test
(let [paths (map str (fs/list-dir (fs/real-path ".")))]
(is (> (count paths) 1)))
(let [paths (map str (fs/list-dir (fs/real-path ".") (fn accept [x] (fs/directory? x))))]
(is (> (count paths) 1)))
(let [paths (map str (fs/list-dir (fs/real-path ".") (fn accept [_] false)))]
(is (zero? (count paths))))
(let [paths (map str (fs/list-dir (fs/real-path ".") "*.clj"))]
(is (pos? (count paths)))))
(deftest delete-tree-test
(let [tmp-dir1 (temp-dir)
nested-dir (fs/file tmp-dir1 "foo" "bar" "baz")
_ (fs/create-dirs nested-dir)]
(is (fs/exists? nested-dir))
(fs/delete-tree nested-dir)
(is (not (fs/exists? nested-dir)))))
(deftest move-test
(let [tmp-dir1 (fs/create-temp-dir)
f (fs/file tmp-dir1 "foo.txt")
_ (spit f "foo")
f2 (fs/file tmp-dir1 "bar.txt")]
(fs/move f f2)
(is (not (fs/exists? f)))
(is (fs/exists? f2))
(is (= "foo" (str/trim (slurp f2))))))

View file

@ -176,6 +176,12 @@
(test-namespaces 'test-check.smoke-test)
(test-namespaces 'babashka.fs-test)
;; test fs once again, but now from source
(require '[babashka.fs] :reload)
(test-namespaces 'babashka.fs-test)
;;;; final exit code
(let [{:keys [:test :fail :error] :as m} @status]