cryogen-core/src/cryogen_core/io.clj

44 lines
1.4 KiB
Clojure
Raw Normal View History

2014-12-05 15:56:40 +00:00
(ns cryogen-core.io
2014-12-14 18:37:59 +00:00
(:require [clojure.java.io :as io]
[me.raynes.fs :as fs]))
2014-12-04 16:38:48 +00:00
(def public "resources/public")
(defn get-resource [resource]
(-> (Thread/currentThread)
(.getContextClassLoader)
(.getResource resource)
(.toURI)
2014-12-14 18:37:59 +00:00
(io/file)))
2014-12-04 16:38:48 +00:00
(defn find-assets [f ext]
(->> (get-resource f)
file-seq
(filter (fn [file] (-> file .getName (.endsWith ext))))))
(defn create-folder [folder]
2014-12-14 18:37:59 +00:00
(let [loc (io/file (str public folder))]
2014-12-04 16:38:48 +00:00
(when-not (.exists loc)
(.mkdirs loc))))
(defn wipe-public-folder [keep-files]
(let [filenamefilter (reify java.io.FilenameFilter (accept [this _ filename] (not (some #{filename} keep-files))))]
2014-12-14 18:37:59 +00:00
(doseq [path (.listFiles (io/file public) filenamefilter)]
2014-12-04 16:38:48 +00:00
(fs/delete-dir path))))
(defn copy-images-from-markdown-folders [{:keys [blog-prefix]}]
2014-12-14 18:37:59 +00:00
(doseq [asset (fs/find-files "resources/templates/md" #".+(jpg|jpeg|png|gif)")]
(io/copy asset (io/file (str public blog-prefix "/img/" (.getName asset))))))
2014-12-04 16:38:48 +00:00
(defn copy-resources [{:keys [blog-prefix resources]}]
(doseq [resource resources]
(let [src (str "resources/templates/" resource)
target (str public blog-prefix "/" resource)]
(cond
2014-12-14 18:37:59 +00:00
(not (.exists (io/file src)))
2014-12-04 16:38:48 +00:00
(throw (IllegalArgumentException. (str "resource " src " not found")))
2014-12-14 18:37:59 +00:00
(.isDirectory (io/file src))
2014-12-04 16:38:48 +00:00
(fs/copy-dir src target)
:else
(fs/copy src target)))))