|
@@ -0,0 +1,50 @@
|
|
|
+#!/usr/bin/env bb
|
|
|
+
|
|
|
+(require '[clojure.java.io :as io]
|
|
|
+ '[clojure.string :as string]
|
|
|
+ '[clojure.pprint :refer [pprint]])
|
|
|
+
|
|
|
+(def exceptions
|
|
|
+ #{"index.html"
|
|
|
+ "styles.css"
|
|
|
+ "js"
|
|
|
+ "clapping.gif"
|
|
|
+ "go.png"
|
|
|
+ "clapping.png"
|
|
|
+ "vendor"})
|
|
|
+
|
|
|
+(let [foldername "./resources/public"
|
|
|
+ folder (io/file foldername)
|
|
|
+ existing-filename "./library.edn"
|
|
|
+ existing (try
|
|
|
+ (-> existing-filename
|
|
|
+ (slurp)
|
|
|
+ (read-string))
|
|
|
+ (catch Exception _ []))
|
|
|
+ existing-files (->> existing
|
|
|
+ (map :image)
|
|
|
+ (set))
|
|
|
+ highest-index (or (some->> existing
|
|
|
+ (map :id)
|
|
|
+ (not-empty)
|
|
|
+ (apply max)
|
|
|
+ (inc))
|
|
|
+ 1)]
|
|
|
+ (if (.isDirectory folder)
|
|
|
+ (->> (.list folder)
|
|
|
+ (remove exceptions)
|
|
|
+ (remove existing-files)
|
|
|
+ (map-indexed (fn [ind file]
|
|
|
+ {:id (+ highest-index ind)
|
|
|
+ :name (-> file
|
|
|
+ (string/replace #"\.[^\.]*$" "")
|
|
|
+ (string/replace #"[-\._]" " "))
|
|
|
+ :image file}))
|
|
|
+ (concat existing)
|
|
|
+ (vec)
|
|
|
+ ((fn [new-data]
|
|
|
+ (with-open [writer (io/writer existing-filename)]
|
|
|
+ (pprint new-data writer))
|
|
|
+ (println "wrote to" existing-filename))))
|
|
|
+ (println "Folder not found. Make sure to run this script from its containing folder.")))
|
|
|
+
|