Skip to content

Commit 2ad363a

Browse files
committed
script
1 parent 6d67d81 commit 2ad363a

File tree

3 files changed

+51
-30
lines changed

3 files changed

+51
-30
lines changed

bin/release-readme+changelog.clj

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#!/usr/bin/env bb
2+
(ns release-next-readme+changelog
3+
(:require [clojure.string :as str]))
4+
5+
(defn get-project-version []
6+
{:post [(string? %)
7+
(seq %)]}
8+
(let [project-version-prefix "(defproject clojure.java-time \""
9+
project-version-suffix "\""]
10+
(some #(when (and (str/starts-with? % project-version-prefix)
11+
(str/ends-with? % project-version-suffix))
12+
(subs % (count project-version-prefix) (- (count %) (count project-version-suffix))))
13+
(str/split-lines (slurp "project.clj")))))
14+
15+
(defn update-readme [project-version slurped-readme]
16+
(let [replace-version-around (volatile!
17+
#{{:prefix "clojure.java-time/clojure.java-time {:mvn/version \""
18+
:suffix "\"}"}
19+
{:prefix "[clojure.java-time \""
20+
:suffix "\"]"}})
21+
res (str/join "\n"
22+
(map (fn [s]
23+
(if-some [matching (first (filter #(and (str/starts-with? s (:prefix %))
24+
(str/ends-with? s (:suffix %)))
25+
@replace-version-around))]
26+
(do (vswap! replace-version-around disj matching)
27+
(str (:prefix matching) project-version (:suffix matching)))
28+
s))
29+
(str/split-lines slurped-readme)))]
30+
(assert (empty? @replace-version-around)
31+
(str "Failed to replace: " @replace-version-around))
32+
res))
33+
34+
(assert (= "# Readme\n\n## Dependency\n\nclojure.java-time/clojure.java-time {:mvn/version \"1.0.0\"}\n\n[clojure.java-time \"1.0.0\"]"
35+
(update-readme "1.0.0"
36+
"# Readme\n\n## Dependency\n\nclojure.java-time/clojure.java-time {:mvn/version \"0.5.0\"}\n\n[clojure.java-time \"0.5.0\"]")))
37+
38+
(defn update-changelog [project-version slurped-changelog]
39+
(str/replace slurped-changelog "## NEXT\n" (format "## NEXT\n\n## %s\n" project-version)))
40+
41+
(assert (= "# Changelog\n\n## NEXT\n\n## 1.0.0\n\n- a release note"
42+
(update-changelog "1.0.0" "# Changelog\n\n## NEXT\n\n- a release note")))
43+
44+
(defn -main []
45+
(let [project-version (get-project-version)]
46+
(spit "README.md" (update-readme project-version (slurp "README.md")))
47+
(spit "CHANGELOG.md" (update-changelog project-version (slurp "CHANGELOG.md")))))
48+
49+
(when (= *file* (System/getProperty "babashka.file"))
50+
(apply -main *command-line-args*))

bin/sync-readme-version.clj

Lines changed: 0 additions & 29 deletions
This file was deleted.

project.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
["vcs" "assert-committed"]
2626
["change" "version" "leiningen.release/bump-version" "release"]
2727
["doc"]
28-
["shell" "./bin/sync-readme-version.clj"]
28+
["shell" "./bin/release-readme+changelog.clj"]
2929
["vcs" "commit"]
3030
["vcs" "tag" "--no-sign"]
3131
["deploy" "release"]

0 commit comments

Comments
 (0)