|
37 | 37 |
|
38 | 38 | (defn update-version [] |
39 | 39 | (println "\n\n[ Updating version number ]\n") |
40 | | - (let [old-v (current-version)] |
41 | | - (update-file "CHANGELOG.md" #(str/replace % "# WIP" (str "# " new-v))) |
| 40 | + (let [old-v (current-version) |
| 41 | + today (.format |
| 42 | + (java.time.format.DateTimeFormatter/ofPattern "MMM d, yyyy") |
| 43 | + (java.time.LocalDate/now))] |
| 44 | + (update-file "CHANGELOG.md" #(str/replace % "# WIP" (str "# " new-v " - " today))) |
42 | 45 | (update-file "project.clj" #(str/replace % old-v new-v)) |
43 | 46 | (update-file "README.md" #(str/replace % old-v new-v)) |
44 | 47 | (update-file "release-js/package.json" #(str/replace % |
|
55 | 58 | (defn make-commit [] |
56 | 59 | (println "\n\n[ Making a commit ]\n") |
57 | 60 | (sh "git" "add" |
58 | | - "CHANGELOG.md" |
59 | | - "project.clj" |
60 | | - "README.md" |
61 | | - "release-js/package.json" |
62 | | - "release-js/wrapper.prefix") |
| 61 | + "CHANGELOG.md" |
| 62 | + "project.clj" |
| 63 | + "README.md" |
| 64 | + "release-js/package.json" |
| 65 | + "release-js/wrapper.prefix") |
63 | 66 |
|
64 | 67 | (sh "git" "commit" "-m" commit-message) |
65 | 68 | (sh "git" "tag" new-v) |
|
71 | 74 |
|
72 | 75 | (defn- str->json [s] |
73 | 76 | (-> s |
74 | | - (str/replace "\\" "\\\\") |
75 | | - (str/replace "\"" "\\\"") |
76 | | - (str/replace "\n" "\\n"))) |
| 77 | + (str/replace "\\" "\\\\") |
| 78 | + (str/replace "\"" "\\\"") |
| 79 | + (str/replace "\n" "\\n"))) |
77 | 80 |
|
78 | 81 | (defn- map->json [m] |
79 | 82 | (str "{ " |
|
86 | 89 |
|
87 | 90 | (defn github-release [] |
88 | 91 | (sh "cp" "release-js/datascript.js" (str "release-js/datascript-" new-v ".min.js")) |
89 | | - (let [changelog (->> (slurp "CHANGELOG.md") |
90 | | - str/split-lines |
91 | | - (drop-while #(not= (str "# " new-v) %)) |
92 | | - next |
93 | | - (take-while #(not (re-matches #"# .+" %))) |
94 | | - (remove str/blank?) |
95 | | - (str/join "\n")) |
96 | | - request { "tag_name" new-v |
97 | | - "name" new-v |
| 92 | + (let [re (as-> new-v % |
| 93 | + (str/replace % "." "\\.") |
| 94 | + (str "# " % " .*") |
| 95 | + (re-pattern %)) |
| 96 | + changelog (->> (slurp "CHANGELOG.md") |
| 97 | + str/split-lines |
| 98 | + (drop-while #(not (re-matches re %))) |
| 99 | + next |
| 100 | + (take-while #(not (re-matches #"# .+" %))) |
| 101 | + (remove str/blank?) |
| 102 | + (str/join "\n")) |
| 103 | + request {"tag_name" new-v |
| 104 | + "name" new-v |
98 | 105 | "target_commitish" "master" |
99 | | - "body" changelog} |
100 | | - response (sh "curl" "-u" GITHUB_BASIC |
101 | | - "-X" "POST" |
102 | | - "--data" (map->json request) |
103 | | - "https://api.github.com/repos/tonsky/datascript/releases") |
104 | | - [_ id] (re-find #"\"id\": (\d+)" response)] |
| 106 | + "body" changelog} |
| 107 | + response (sh "curl" "-u" GITHUB_BASIC |
| 108 | + "-X" "POST" |
| 109 | + "--data" (map->json request) |
| 110 | + "https://api.github.com/repos/tonsky/datascript/releases") |
| 111 | + [_ id] (re-find #"\"id\": (\d+)" response)] |
105 | 112 | (sh "curl" "-u" GITHUB_BASIC |
106 | | - "-X" "POST" |
107 | | - "-H" "Content-Type: application/javascript" |
108 | | - "--data-binary" (str "@release-js/datascript-" new-v ".min.js") |
109 | | - (str "https://uploads.github.com/repos/tonsky/datascript/releases/" id "/assets?name=datascript-" new-v ".min.js")))) |
| 113 | + "-X" "POST" |
| 114 | + "-H" "Content-Type: application/javascript" |
| 115 | + "--data-binary" (str "@release-js/datascript-" new-v ".min.js") |
| 116 | + (str "https://uploads.github.com/repos/tonsky/datascript/releases/" id "/assets?name=datascript-" new-v ".min.js")))) |
110 | 117 |
|
111 | 118 | (defn -main [] |
112 | 119 | (sh "lein" "clean") |
|
0 commit comments