forked from ring-clojure/ring
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathupdate_versions.bb
More file actions
executable file
·70 lines (59 loc) · 1.99 KB
/
update_versions.bb
File metadata and controls
executable file
·70 lines (59 loc) · 1.99 KB
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
69
70
#!/usr/bin/env bb
(require '[clojure.string :as str])
(import 'java.time.format.DateTimeFormatter
'java.time.LocalDateTime)
(def project-files
["project.clj"
"ring-bench/project.clj"
"ring-core/project.clj"
"ring-core-protocols/project.clj"
"ring-devel/project.clj"
"ring-jakarta-servlet/project.clj"
"ring-jetty-adapter/project.clj"
"ring-servlet/project.clj"
"ring-websocket-protocols/project.clj"])
(def ring-dep-patterns
["ring/ring-core"
"org.ring-clojure/ring-core-protocols"
"ring/ring-devel"
"org.ring-clojure/ring-jakarta-servlet"
"ring/ring-jetty-adapter"
"ring/ring-servlet"
"org.ring-clojure/ring-websocket-protocols"])
(def version (first *command-line-args*))
(when-not version
(println "Error: requires version as first argument.")
(System/exit 1))
(defn- update-deps [s]
(reduce (fn [s pattern]
(let [re (->> (str/re-quote-replacement pattern)
(format "\\[%s \"(.*?)\"\\]")
(re-pattern))]
(str/replace s re (format "[%s \"%s\"]" pattern version))))
s
ring-dep-patterns))
(doseq [f project-files]
(-> (slurp f)
(str/replace #"\(defproject (.*?) \"(.*?)\""
(format "(defproject $1 \"%s\"" version))
(update-deps)
(as-> s (spit f s)))
(println (format "Updated '%s'." f)))
(-> (slurp "README.md")
(str/replace
#"ring/ring-core \{:mvn/version \"(.*?)\"\}"
(format "ring/ring-core {:mvn/version \"%s\"}" version))
(str/replace
#"\[ring/ring-core (.*?)\]"
(format "[ring/ring-core \"%s\"]" version))
(as-> s (spit "README.md" s)))
(println "Updated 'README.md'.")
(def now (LocalDateTime/now))
(def formatter (DateTimeFormatter/ofPattern "yyyy-MM-dd"))
(->> (slurp "CHANGELOG.md")
(str "## " version " (" (.format now formatter) ")\n\n"
"* TBD\n\n")
(spit "CHANGELOG.md"))
(println "Updated 'CHANGELOG.md'.")
(newline)
(println "Remember to update the CHANGELOG!")