Compare commits
5 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6815f661a9 | ||
|
|
7fae43eef1 | ||
|
|
e7fecf3417 | ||
|
|
246de627aa | ||
|
|
a4ceebe209 |
9 changed files with 141 additions and 9 deletions
7
deps.edn
7
deps.edn
|
|
@ -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"}
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
borkdude@MBP2019.local.17736
|
||||
2
fs
2
fs
|
|
@ -1 +1 @@
|
|||
Subproject commit b008b2d6ea64e49bf76066b7f057ae4638534e35
|
||||
Subproject commit 3839aca1aefb816e863327a206854a53962965c9
|
||||
|
|
@ -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"]
|
||||
|
|
|
|||
|
|
@ -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
50
src/babashka/impl/fs.clj
Normal 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)})
|
||||
|
|
@ -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))
|
||||
|
|
|
|||
70
test-resources/lib_tests/babashka/fs_test.clj
Normal file
70
test-resources/lib_tests/babashka/fs_test.clj
Normal 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))))))
|
||||
|
|
@ -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]
|
||||
|
|
|
|||
Loading…
Reference in a new issue