mob
This commit is contained in:
parent
a9a58b0a25
commit
e370ed23a0
2 changed files with 57 additions and 24 deletions
|
@ -37,32 +37,20 @@
|
||||||
(when (Files/exists path-from-fs follow-link-option)
|
(when (Files/exists path-from-fs follow-link-option)
|
||||||
path-from-fs)))
|
path-from-fs)))
|
||||||
|
|
||||||
(defn create-resource
|
(defn source-type
|
||||||
([virtual-path
|
[]
|
||||||
java-path]
|
:filesystem)
|
||||||
{:virtual-path virtual-path
|
|
||||||
:java-uri (.toUri java-path)
|
(defn resource-type
|
||||||
:java-path java-path
|
[java-path]
|
||||||
:source-type :filesystem
|
(cond
|
||||||
:resource-type (cond
|
(Files/isDirectory java-path follow-link-option) :dir
|
||||||
(Files/isDirectory java-path no-link-option) :dir
|
(Files/isRegularFile java-path follow-link-option) :file
|
||||||
(Files/isRegularFile java-path no-link-option) :file
|
:else :unknown))
|
||||||
:else :unknown)}))
|
|
||||||
|
|
||||||
; ------------------- infra ---------------------------------
|
; ------------------- 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
|
(defn
|
||||||
list-entries-for-dir
|
list-entries-for-dir
|
||||||
[resource]
|
[java-path]
|
||||||
(.list (.toFile (:java-path resource))))
|
(.list (.toFile java-path)))
|
||||||
|
|
45
src/cryogen_core/classpath_able_io/type.clj
Normal file
45
src/cryogen_core/classpath_able_io/type.clj
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
; 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.type
|
||||||
|
(:require [clojure.java.io :as io]
|
||||||
|
[clojure.string :as st]
|
||||||
|
[schema.core :as s]
|
||||||
|
[cryogen-core.classpath-able-io.fs :as fs])
|
||||||
|
(:import [java.net URI]
|
||||||
|
[java.util.jar JarFile JarEntry]
|
||||||
|
[java.nio.file FileSystems Paths Files LinkOption StandardCopyOption]
|
||||||
|
[java.nio.file.attribute FileAttribute]))
|
||||||
|
|
||||||
|
; -------------------- Domain Definition ------------------------------
|
||||||
|
(def SourceType (s/enum :java-classpath-filesystem :java-classpath-jar :filesystem))
|
||||||
|
(def ResourceType (s/enum :file :dir :unknown))
|
||||||
|
(def Prefix s/Str)
|
||||||
|
(def JavaUri s/Any) ; java.net.URI
|
||||||
|
(def VirtualPath s/Str)
|
||||||
|
(def JavaPath s/Any) ; java.nio.Path
|
||||||
|
(def Resource
|
||||||
|
{:virtual-path VirtualPath
|
||||||
|
:source-type SourceType
|
||||||
|
:resource-type ResourceType
|
||||||
|
:java-uri JavaUri
|
||||||
|
:java-path JavaPath})
|
||||||
|
|
||||||
|
(defn create-resource
|
||||||
|
([virtual-path
|
||||||
|
java-path]
|
||||||
|
{:virtual-path virtual-path
|
||||||
|
:java-uri (.toUri java-path)
|
||||||
|
:java-path java-path
|
||||||
|
:source-type (fs/source-type)
|
||||||
|
:resource-type (fs/resource-type java-path)}))
|
||||||
|
|
||||||
|
(defn
|
||||||
|
list-entries-for-dir
|
||||||
|
[resource]
|
||||||
|
(fs/list-entries-for-dir (:java-path resource)))
|
Loading…
Reference in a new issue