diff --git a/.gitignore b/.gitignore index 1f6cbc7..8d392cf 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ lib classes sample_src .idea +target \ No newline at end of file diff --git a/Fresh.iml b/Fresh.iml index 06be3f9..9d63d15 100644 --- a/Fresh.iml +++ b/Fresh.iml @@ -6,14 +6,18 @@ - - + + + + + + - + @@ -60,6 +64,12 @@ + + + + + + + - - + \ No newline at end of file diff --git a/project.clj b/project.clj index b560af2..5201371 100644 --- a/project.clj +++ b/project.clj @@ -1,9 +1,8 @@ -(defproject fresh "1.0.2" - :description "A library to keep your clojure runtime 'Fresh'." - :dependencies [[org.clojure/clojure "1.2.0"]] - :dev-dependencies [[speclj "1.2.0"] - [lein-clojars "0.6.0"]] - :test-path "spec" - :dev-resources-path "sample_src" - - ) +(defproject fresh "1.1.0" + :description "A library to keep your clojure runtime 'Fresh'." + :dependencies [[org.clojure/clojure "1.6.0"]] + :profiles {:dev {:dependencies [[speclj "3.2.0"]] + :resource-paths ["sample_src"]}} + :plugins [[speclj "3.2.0"]] + :source-paths ["src"] + :test-paths ["spec"]) diff --git a/spec/fresh/core_spec.clj b/spec/fresh/core_spec.clj index 0771dce..cacf18e 100644 --- a/spec/fresh/core_spec.clj +++ b/spec/fresh/core_spec.clj @@ -89,11 +89,20 @@ (before (establish-sample-files)) (it "should not include hidden files as clj files" - - (let [hidden-file (write-file "sample/.hidden.clj" "I'm a hidden file!") - files (clj-files-in sample-dir)] + (write-file "sample/.hidden.clj" "I'm a hidden file!") + (let [files (clj-files-in sample-dir)] (should= false (contains? (set (map #(.getName %) files)) ".hidden.clj")))) + (it "finds cljc files by default" + (write-file "sample/portable.cljc" "I'm portable") + (let [files (clj-files-in sample-dir)] + (should-contain "portable.cljc" (set (map #(.getName %) files))))) + + (it "finds specified files by default" + (write-file "sample/portable.cljx" "I'm antiquated") + (let [files (find-files-in #".*\.cljx" sample-dir)] + (should-contain "portable.cljx" (set (map #(.getName %) files))))) + (it "finds src files from ns name" (should= (sample-file "sample/core.clj") (ns-to-file "sample.core")) (should= (sample-file "sample/a/one.clj") (ns-to-file "sample.a.one"))) diff --git a/src/fresh/core.clj b/src/fresh/core.clj index a35578a..cca27a8 100644 --- a/src/fresh/core.clj +++ b/src/fresh/core.clj @@ -6,16 +6,20 @@ (:import [java.io PushbackReader FileReader File])) -(def clj-file-regex #".*\.clj") -(defn clj-files-in - "Returns a seq of all clojure source files contained in the given directories." - [& dirs] +(defn find-files-in + "Returns a seq of all files (matching the regex) contained in the given directories." + [pattern & dirs] (let [dirs (map #(.getCanonicalFile %) dirs) files (reduce #(into %1 (file-seq (file %2))) [] dirs) files (remove #(.isHidden %) files) - clj-files (filter #(re-matches clj-file-regex (.getName %)) files)] + clj-files (filter #(re-matches pattern (.getName %)) files)] clj-files)) +(def clj-file-regex #".*\.clj(c)?") +(defn clj-files-in + "Returns a seq of all clojure source files contained in the given directories." + [& dirs] (apply find-files-in clj-file-regex dirs)) + ;; Resolving ns names --------------------------------------------------------------------------------------------------- ; (defn ns-to-filename