blob: 4d2688a77cc6b2dbeb3b2413085b99cd1b6140e4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
{
:paths ["src" "resources"]
:deps {c199/c199 {:local/root "."}}
:tasks
{
:requires ([clojure.java.io :as io]
[clojure.edn :as edn]
[babashka.fs :as fs])
:init (do
(defn get-first-form
[file]
(with-open [r (-> file fs/file io/reader)
pr (java.io.PushbackReader. r)]
(edn/read pr)))
(defn get-task-ns
[task]
(let [glob-target (format "src/*/%s.clj" (name task))
file (->> glob-target (fs/glob ".") first)]
(-> file get-first-form second str)))
(defn run-task-clj
[task args]
(apply clojure (str "-M:" task) args))
(defn run-task-bb
([task args] (run-task-bb task args (get-task-ns task)))
([task args task-ns]
(let [bb-cmd (format "bb -m %s " task-ns)]
(apply shell bb-cmd args))))
(defn bb-no-go
[task & _]
(binding [*out* *err*]
(let [task-num (-> task name last (Character/digit 10))]
(println
(str "error: can't run Task " task-num
" via Babashka because it depends"
" on some incompatible libraries."))))
(System/exit 1)))
clean {:doc "Clean out temporary files"
:task (do (clojure "-T:build" "clean")
(run! fs/delete-tree
[".nrepl-port" ".cpcache" ".lsp" ".clj-kondo"]))}
generate-jar {:doc "Generate JAR file"
:task (clojure "-X:jar")}
test {:doc "Run tests"
:task (clojure "-T:build test")}
c**** {:doc "CHALLENGE TASKS"}
task-1 {:doc "Run Task 1 (via clojure)"
:task (run-task-clj :t1 *command-line-args*)}
task-1-bb {:doc "Run Task 1 (via Babashka)"
:task (run-task-bb :t1 *command-line-args*)}
task-2 {:doc "Run Task 2 (via clojure)"
:task (run-task-clj :t2 *command-line-args*)}
task-2-bb {:doc "Run Task 2 (via Babashka)"
:task (run-task-bb :t2 *command-line-args*)}
}
}
|