56 lines
1.5 KiB
Clojure
56 lines
1.5 KiB
Clojure
(defmulti task first)
|
|
|
|
(defmethod task :default
|
|
[[task-name]]
|
|
(println "Unknown task:" task-name)
|
|
(System/exit 1))
|
|
|
|
(require
|
|
'[edna.core :as edna]
|
|
'[music.core :as c]
|
|
'[cljs.build.api :as api]
|
|
'[clojure.java.io :as io])
|
|
|
|
(defn delete-children-recursively! [f]
|
|
(when (.isDirectory f)
|
|
(doseq [f2 (.listFiles f)]
|
|
(delete-children-recursively! f2)))
|
|
(when (.exists f) (io/delete-file f)))
|
|
|
|
(defmethod task nil
|
|
[_]
|
|
(let [out-file "resources/public/main.js"
|
|
out-dir "resources/public/main.out"]
|
|
(println "Building main.js")
|
|
(delete-children-recursively! (io/file out-dir))
|
|
(api/build "src" {:main 'music.core
|
|
:optimizations :advanced
|
|
:output-to out-file
|
|
:output-dir out-dir
|
|
:infer-externs true})
|
|
(delete-children-recursively! (io/file out-dir))
|
|
(println "Build complete:" out-file)
|
|
(System/exit 0)))
|
|
|
|
(defn export-song-wav [song]
|
|
(let [wav-name (str song ".wav")
|
|
build-dir "target"
|
|
output-file (io/file build-dir wav-name)]
|
|
(.mkdir (io/file build-dir))
|
|
(println "Building" wav-name)
|
|
(edna/export! (c/read-music song) {:type :wav, :out output-file})
|
|
(println "Build complete:" wav-name)
|
|
(println "Song saved into:" (.getPath output-file))))
|
|
|
|
(defmethod task "wav"
|
|
[[_ song]]
|
|
(export-song-wav song)
|
|
(System/exit 0))
|
|
|
|
(defmethod task "soundtrack"
|
|
[_]
|
|
(run! #(task ["wav" %]) (c/get-all-songs))
|
|
(System/exit 0))
|
|
|
|
(task *command-line-args*)
|