aboutsummaryrefslogtreecommitdiff
path: root/src/lux/packager/lib.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/lux/packager/lib.clj')
-rw-r--r--src/lux/packager/lib.clj15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/lux/packager/lib.clj b/src/lux/packager/lib.clj
index 41f3143a0..af48e31eb 100644
--- a/src/lux/packager/lib.clj
+++ b/src/lux/packager/lib.clj
@@ -13,23 +13,24 @@
))
;; [Utils]
-(defn ^:private read-file [file]
+(defn ^:private read-file ^objects [^File file]
(with-open [is (java.io.FileInputStream. file)]
(let [data (byte-array (.length file))]
(.read is data)
data)))
-(defn ^:private add-to-tar! [prefix ^File file os]
+(defn ^:private add-to-tar! [prefix ^File file ^TarArchiveOutputStream os]
"(-> Text File TarArchiveOutputStream Unit)"
(let [file-name (str prefix "/" (.getName file))]
(if (.isDirectory file)
(doseq [file (seq (.listFiles file))]
(add-to-tar! file-name file os))
- (doto os
- (.putArchiveEntry (doto (new TarArchiveEntry file-name)
- (.setSize (.length file))))
- (.write (read-file file))
- (.closeArchiveEntry)))))
+ (let [data (read-file file)]
+ (doto os
+ (.putArchiveEntry (doto (new TarArchiveEntry file-name)
+ (.setSize (.length file))))
+ (.write data 0 (alength data))
+ (.closeArchiveEntry))))))
;; [Exports]
(defn package [output-lib-name ^File source-dir]