123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #!/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.")))
|