start refactoring for fs-split
This commit is contained in:
parent
f0e71deb7d
commit
805b2b8842
2 changed files with 78 additions and 0 deletions
58
src/cryogen_core/classpath_able_io/fs.clj
Normal file
58
src/cryogen_core/classpath_able_io/fs.clj
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
; Copyright (c) meissa. All rights reserved.
|
||||||
|
; The use and distribution terms for this software are covered by the
|
||||||
|
; Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
|
||||||
|
; which can be found in the file epl-v10.html at the root of this distribution.
|
||||||
|
; By using this software in any fashion, you are agreeing to be bound by
|
||||||
|
; the terms of this license.
|
||||||
|
; You must not remove this notice, or any other, from this software.
|
||||||
|
|
||||||
|
(ns cryogen-core.classpath-able-io.fs
|
||||||
|
(:require [clojure.java.io :as io]
|
||||||
|
[clojure.string :as st]
|
||||||
|
[schema.core :as s])
|
||||||
|
(:import [java.net URI]
|
||||||
|
[java.util.jar JarFile JarEntry]
|
||||||
|
[java.nio.file FileSystems Paths Files LinkOption StandardCopyOption]
|
||||||
|
[java.nio.file.attribute FileAttribute]))
|
||||||
|
|
||||||
|
; ----------------------- Domain functions ------------------------
|
||||||
|
(def no-link-option (into-array [LinkOption/NOFOLLOW_LINKS]))
|
||||||
|
|
||||||
|
(s/defn path
|
||||||
|
[full-path]
|
||||||
|
(let [path-from-fs (Paths/get (URI. (str "file://" full-path)))] ;fragile
|
||||||
|
(try
|
||||||
|
(when (Files/exists path-from-fs no-link-option)
|
||||||
|
path-from-fs)
|
||||||
|
(catch Exception e
|
||||||
|
nil))))
|
||||||
|
|
||||||
|
(defn create-resource
|
||||||
|
([virtual-path
|
||||||
|
java-path]
|
||||||
|
{:virtual-path virtual-path
|
||||||
|
:java-uri (.toUri java-path)
|
||||||
|
:java-path java-path
|
||||||
|
:source-type :filesystem
|
||||||
|
:resource-type (cond
|
||||||
|
(Files/isDirectory java-path no-link-option) :dir
|
||||||
|
(Files/isRegularFile java-path no-link-option) :file
|
||||||
|
:else :unknown)}))
|
||||||
|
|
||||||
|
; ------------------- infra ---------------------------------
|
||||||
|
(defn user-dir []
|
||||||
|
(java.lang.System/getProperty "user.dir"))
|
||||||
|
|
||||||
|
(defn path-from-fs
|
||||||
|
[full-path]
|
||||||
|
(let [path-from-fs (Paths/get (URI. (str "file://" full-path)))] ;fragile
|
||||||
|
(try
|
||||||
|
(when (Files/exists path-from-fs no-link-option)
|
||||||
|
path-from-fs)
|
||||||
|
(catch Exception e
|
||||||
|
nil))))
|
||||||
|
|
||||||
|
(defn
|
||||||
|
list-entries-for-dir
|
||||||
|
[resource]
|
||||||
|
(.list (.toFile (:java-path resource))))
|
20
test/cryogen_core/classpath_able_io/fs_test.clj
Normal file
20
test/cryogen_core/classpath_able_io/fs_test.clj
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
; Copyright (c) meissa. All rights reserved.
|
||||||
|
; The use and distribution terms for this software are covered by the
|
||||||
|
; Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
|
||||||
|
; which can be found in the file epl-v10.html at the root of this distribution.
|
||||||
|
; By using this software in any fashion, you are agreeing to be bound by
|
||||||
|
; the terms of this license.
|
||||||
|
; You must not remove this notice, or any other, from this software.
|
||||||
|
|
||||||
|
(ns cryogen-core.classpath-able-io.fs-test
|
||||||
|
(:require [clojure.test :refer :all]
|
||||||
|
[clojure.java.io :as io]
|
||||||
|
[schema.core :as s]
|
||||||
|
[cryogen-core.file-test-tools :as ftt]
|
||||||
|
[cryogen-core.classpath-able-io.fs :as sut]))
|
||||||
|
|
||||||
|
(def fs-root "fs_root")
|
||||||
|
|
||||||
|
(deftest test-path
|
||||||
|
(is
|
||||||
|
(sut/path (str fs-root "dummy/dummy_from_fs"))))
|
Loading…
Reference in a new issue