|  | @@ -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.")))
 | 
	
		
			
				|  |  | +
 |