aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEduardo Julian2016-10-29 20:05:24 -0400
committerEduardo Julian2016-10-29 20:05:24 -0400
commit2900cc94bcc7ff44cf7caa9871bc0aaab4090c38 (patch)
tree4125cdaef33f37dd7a0674acc883a354812a5bb8
parent75543cbbc31313701087ed10d1a99e5a1eaedb74 (diff)
- Fixed a bug wherein un-used pre-compiled modules were still being packaged in the resulting .jar.
-rw-r--r--src/lux/compiler/cache.clj23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/lux/compiler/cache.clj b/src/lux/compiler/cache.clj
index 374993a7a..955f73d9b 100644
--- a/src/lux/compiler/cache.clj
+++ b/src/lux/compiler/cache.clj
@@ -55,16 +55,31 @@
(do (clean-file (new File (str &&/output-dir "/" (&host/->module-class module))))
(return* state nil))))
+(defn ^:private module-dirs
+ "(-> File (clojure.Seq File))"
+ [^File module]
+ (->> module
+ .listFiles
+ (filter #(.isDirectory %))
+ (map module-dirs)
+ (apply concat)
+ (list* module)))
+
(defn clean [state]
"(-> Compiler Null)"
(let [needed-modules (->> state (&/get$ &/$modules) &/|keys &/->seq set)
- outdated? #(-> ^File % .getName (string/replace &host/module-separator "/") (->> (contains? needed-modules)) not)
- outdate-files (->> &&/output-dir (new File) .listFiles seq (filter outdated?))
+ output-dir-prefix (str (.getAbsolutePath (new File &&/output-dir)) "/")
+ outdated? #(->> % (contains? needed-modules) not)
+ outdated-modules (->> (new File &&/output-dir)
+ .listFiles (filter #(.isDirectory %))
+ (map module-dirs) doall (apply concat)
+ (map #(-> ^File % .getAbsolutePath (string/replace output-dir-prefix "")))
+ (filter outdated?))
program-file (new File &&/output-package)]
(when (.exists program-file)
(.delete program-file))
- (doseq [f outdate-files]
- (clean-file f))
+ (doseq [^String f outdated-modules]
+ (clean-file (new File (str output-dir-prefix f))))
nil))
(defn ^:private install-all-classes-in-module [!classes module* ^String module-path]