        (interpose delimiter)
        (apply str)))
 
+(defn- classpath-directories []
+  (filter #(and
+            (instance? File %)
+            (.isDirectory ^File %))
+          (classpath/system-classpath)))
+
+(defn- classpath-jarfiles []
+  (->> (classpath/system-classpath)
+       (filter classpath/jar-file?)
+       (map #(java.util.jar.JarFile. ^java.io.File %))))
+
 (defn- get-files
   "Get migrations files given a folder path.
 Will try to locate files on the local filesystem, folder on the classpath

             [core]
             [protocols]
             [repl]
             [strategy]]))

;; ==========================================================================
;; methods implemented by migrator/seed targets

  [path]
  (let [local-folder          (io/file path)
        classpath-folder-name (drop-first-part path "/")
        folder-on-classpath   (->> (classpath-directories)
                                   (map #(str (.getPath ^File %) "/" classpath-folder-name))
                                   (map io/file)
                                   (filter #(.isDirectory ^File %))
                                   first)]

    (cond
     ;; If it's a local folder just read the file from there
     (.isDirectory local-folder)
     (->> (.listFiles local-folder)
          (map #(vector % (.getName ^File %))))

     ;; If it's a folder on the classpath use that
     folder-on-classpath
     (->> (.listFiles ^File folder-on-classpath)
          (map #(vector % (.getName ^File %))))

     ;; Try finding this path inside a jar on the classpath
     :else
     (->> (classpath-jarfiles)
          (mapcat classpath/filenames-in-jar)
          (filter #(.startsWith ^String % classpath-folder-name))
          (map #(vector (io/resource %) (.getName (io/file %))))))))

(defn- get-migration-namespaces
