aboutsummaryrefslogtreecommitdiff
path: root/src/clojure/contrib/jar.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/clojure/contrib/jar.clj')
-rw-r--r--src/clojure/contrib/jar.clj32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/clojure/contrib/jar.clj b/src/clojure/contrib/jar.clj
new file mode 100644
index 00000000..7eab2f5e
--- /dev/null
+++ b/src/clojure/contrib/jar.clj
@@ -0,0 +1,32 @@
+;;; jar.clj: utilities for working with Java JAR files
+
+;; by Stuart Sierra, http://stuartsierra.com/
+;; April 19, 2009
+
+;; Copyright (c) Stuart Sierra, 2009. 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 clojure.contrib.jar
+ (:import (java.io File)
+ (java.util.jar JarFile)))
+
+(defn jar-file?
+ "Returns true if file is a normal file with a .jar or .JAR extension."
+ [#^File file]
+ (and (.isFile file)
+ (or (.endsWith (.getName file) ".jar")
+ (.endsWith (.getName file) ".JAR"))))
+
+(defn filenames-in-jar
+ "Returns a sequence of Strings naming the non-directory entries in
+ the JAR file."
+ [#^JarFile jar-file]
+ (map #(.getName %)
+ (filter #(not (.isDirectory %))
+ (enumeration-seq (.entries jar-file)))))