/
upgrade.clj
36 lines (32 loc) · 1.01 KB
/
upgrade.clj
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
(ns antq.upgrade)
(defmulti upgrader
(fn [version-checked-dep]
(:project version-checked-dep)))
(defmethod upgrader :default
[dep]
(println
(format "%s: Not supported yet."
(name (:project dep)))))
(defn- confirm
[dep]
(print (format "Do you upgrade %s '%s' to '%s' in %s (y/n): "
(:name dep)
(:version dep)
(:latest-version dep)
(:file dep)))
(flush)
(contains? #{'y 'Y 'yes 'Yes 'YES} (read)))
(defn upgrade!
[version-checked-deps force?]
(doseq [dep version-checked-deps
:when (and (:latest-version dep)
(if force?
true
(confirm dep)))]
(when-let [upgraded-content (upgrader dep)]
(println (format "Upgraded %s '%s' to '%s' in %s."
(:name dep)
(:version dep)
(:latest-version dep)
(:file dep)))
(spit (:file dep) upgraded-content))))