Skip to content

Commit

Permalink
Update publish script
Browse files Browse the repository at this point in the history
  • Loading branch information
PEZ committed Nov 4, 2024
1 parent d215d91 commit f696a6d
Showing 1 changed file with 47 additions and 43 deletions.
90 changes: 47 additions & 43 deletions scripts/publish.clj
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@

(def changelog-filename "CHANGELOG.md")

(defn shell [dry-run? & args]
(defn sh [dry-run? & args]
(if dry-run?
(do (println "Would run:" args)
(do (println "Dry run:" (apply pr-str args))
{:exit 0})
(apply p/sh args)))

Expand Down Expand Up @@ -49,22 +49,22 @@

(defn commit-changelog [file-name message dry-run?]
(println "Committing")
(shell dry-run? "git" "add" file-name)
(throw-if-error (shell dry-run?
"git" "commit"
"-m" message
"-o" file-name)))
(sh dry-run? "git" "add" file-name)
(throw-if-error (sh dry-run?
"git" "commit"
"-m" message
"-o" file-name)))

(defn tag [version dry-run?]
(println "Tagging with version" version)
(throw-if-error (shell dry-run?
"git" "tag"
"-a" (str "v" version)
"-m" (str "Version " version))))
(throw-if-error (sh dry-run?
"git" "tag"
"-a" (str "v" version)
"-m" (str "Version " version))))

(defn push [dry-run?]
(println "Pushing")
(throw-if-error (shell dry-run? "git" "push" "--follow-tags")))
(throw-if-error (sh dry-run? "git" "push" "--follow-tags")))

(defn git-status []
(println "Checking git status")
Expand All @@ -78,47 +78,51 @@
(not up-to-date) (conj :not-up-to-date)
(not clean) (conj :branch-not-clean))))

(defn publish [version dry-run?]
(defn tag-and-push! [version dry-run?]
(tag version dry-run?)
(push dry-run?)
(println "Open to follow the progress of the release:")
(println " https://github.com/PEZ/paste-replaced/actions"))

(defn publish [unreleased-changelog-text dry-run?]
(let [changelog-text (slurp changelog-filename)
extension-version (-> (slurp "package.json")
json/parse-string
(get "version"))]
(if (empty? unreleased-changelog-text)
(do
(println "Publishing without updating the changelog.")
(tag-and-push! extension-version dry-run?))
(let [updated-changelog-text (new-changelog-text changelog-text extension-version)]
(println "Updating changelog")
(if-not dry-run?
(spit changelog-filename updated-changelog-text)
(println "Would write to changelog: " changelog-filename (subs updated-changelog-text 0 200) "..."))
(commit-changelog changelog-filename
(str "Add changelog section for v" extension-version " [skip ci]")
dry-run?)
(tag-and-push! extension-version dry-run?)))))

(defn run [& args]
(let [dry-run? (= "-d" (first args))
changelog-text (slurp changelog-filename)
unreleased-changelog-text (get-changelog-text-for-version "Unreleased")
extension-version (-> (slurp "package.json")
json/parse-string
(get "version"))

status (git-status)]
(println "dry-run?" dry-run?)
(when (or (seq status)
(empty? unreleased-changelog-text))
(when (seq status)
(println "Git status issues: " status))
(when (empty? unreleased-changelog-text)
(println "There are no unreleased changes in the changelog."))
(println "Release anyway? YES/NO: ")
(flush)
(let [answer (str (read))]
(if-not (= "YES" answer)
(println "Aborting publish.")
(if (empty? unreleased-changelog-text)
(do
(println "Publishing without updating the changelog.")
(publish extension-version dry-run?))
(let [updated-changelog-text (new-changelog-text changelog-text extension-version)]
(println "Updating changelog")
(if-not dry-run?
(spit changelog-filename updated-changelog-text)
(println "Would write to changelog: " changelog-filename (subs updated-changelog-text 0 200) "..."))
(commit-changelog changelog-filename
(str "Add changelog section for v" extension-version ""
(when *command-line-args*
(str "\n\n" (first *command-line-args*))))
dry-run?)
(publish extension-version dry-run?))))))))
(if (or (seq status)
(empty? unreleased-changelog-text))
(do
(when (seq status)
(println "Git status issues: " status))
(when (empty? unreleased-changelog-text)
(println "There are no unreleased changes in the changelog."))
(println "Release anyway? YES/NO: ")
(flush)
(let [answer (str (read))]
(if-not (= "YES" answer)
(println "Aborting publish.")
(publish unreleased-changelog-text dry-run?))))
(publish unreleased-changelog-text dry-run?))))

(when (= *file* (System/getProperty "babashka.file"))
(apply run *command-line-args*))
Expand Down

0 comments on commit f696a6d

Please sign in to comment.