Skip to content

Commit 475f4dd

Browse files
committed
Add update-versions.bb admin script
1 parent 4d3f49a commit 475f4dd

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

update_versions.bb

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
#!/usr/bin/env bb
2+
3+
(require '[clojure.string :as str])
4+
(import 'java.time.format.DateTimeFormatter
5+
'java.time.LocalDateTime)
6+
7+
(def project-files
8+
["project.clj"
9+
"ring-bench/project.clj"
10+
"ring-core/project.clj"
11+
"ring-core-protocols/project.clj"
12+
"ring-devel/project.clj"
13+
"ring-jakarta-servlet/project.clj"
14+
"ring-jetty-adapter/project.clj"
15+
"ring-servlet/project.clj"
16+
"ring-websocket-protocols/project.clj"])
17+
18+
(def ring-dep-patterns
19+
["ring/ring-core"
20+
"org.ring-clojure/ring-core-protocols"
21+
"ring/ring-devel"
22+
"org.ring-clojure/ring-jakarta-servlet"
23+
"ring/ring-jetty-adapter"
24+
"ring/ring-servlet"
25+
"org.ring-clojure/ring-websocket-protocols"])
26+
27+
(def version (first *command-line-args*))
28+
29+
(when-not version
30+
(println "Error: requires version as first argument.")
31+
(System/exit 1))
32+
33+
(defn- update-deps [s]
34+
(reduce (fn [s pattern]
35+
(let [re (->> (str/re-quote-replacement pattern)
36+
(format "\\[%s \"(.*?)\"\\]")
37+
(re-pattern))]
38+
(str/replace s re (format "[%s \"%s\"]" pattern version))))
39+
s
40+
ring-dep-patterns))
41+
42+
(doseq [f project-files]
43+
(-> (slurp f)
44+
(str/replace #"\(defproject (.*?) \"(.*?)\""
45+
(format "(defproject $1 \"%s\"" version))
46+
(update-deps)
47+
(as-> s (spit f s)))
48+
(println (format "Updated '%s'." f)))
49+
50+
(-> (slurp "README.md")
51+
(str/replace
52+
#"ring/ring-core \{:mvn/version \"(.*?)\"\}"
53+
(format "ring/ring-core {:mvn/version \"%s\"}" version))
54+
(str/replace
55+
#"\[ring/ring-core (.*?)\]"
56+
(format "[ring/ring-core \"%s\"]" version))
57+
(as-> s (spit "README.md" s)))
58+
(println "Updated 'README.md'.")
59+
60+
(def now (LocalDateTime/now))
61+
(def formatter (DateTimeFormatter/ofPattern "yyyy-MM-dd"))
62+
63+
(->> (slurp "CHANGELOG.md")
64+
(str "## " version " (" (.format now formatter) ")\n\n"
65+
"* TBD\n\n")
66+
(spit "CHANGELOG.md"))
67+
68+
(println "Updated 'CHANGELOG.md'.")
69+
(newline)
70+
(println "Remember to update the CHANGELOG!")

0 commit comments

Comments
 (0)