forked from licht1stein/brepl
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbb.edn
More file actions
70 lines (60 loc) · 3.6 KB
/
bb.edn
File metadata and controls
70 lines (60 loc) · 3.6 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
{:paths ["src"]
:deps {io.github.borkdude/parmezan {:git/sha "a10b6c9019e7b01fe31045929505fe7bd5f2b468"}}
:bbin/bin {brepl {:main-opts ["-f" "brepl"]}}
:tasks
{test {:doc "Run test suite"
:extra-paths ["test"]
:extra-deps {io.github.cognitect-labs/test-runner
{:git/tag "v0.5.1" :git/sha "dfb30dd"}}
:task (exec 'cognitect.test-runner.api/test)
:exec-args {:dirs ["test"]}
:org.babashka/cli {:coerce {:nses [:symbol]
:vars [:symbol]}}}
version-bump {:doc "Bump version (major|minor|patch)"
:task (let [bump-type (first *command-line-args*)
_ (when-not (contains? #{"major" "minor" "patch"} bump-type)
(println "Usage: bb version-bump {major|minor|patch}")
(System/exit 1))
;; Read current version from source file
brepl-content (slurp "src/brepl.clj")
current-version (re-find (re-pattern "\\d+\\.\\d+\\.\\d+") brepl-content)
[major minor patch] (mapv parse-long (clojure.string/split current-version (re-pattern "\\.")))
;; Calculate new version
[new-major new-minor new-patch]
(case bump-type
"major" [(inc major) 0 0]
"minor" [major (inc minor) 0]
"patch" [major minor (inc patch)])
new-version (str new-major "." new-minor "." new-patch)
;; Update source and docs (brepl is regenerated by bb build)
files ["src/brepl.clj" "package.nix" "README.md"]]
(println "Current version:" current-version)
(println "New version:" new-version)
(doseq [file files]
(let [content (slurp file)
updated (clojure.string/replace content current-version new-version)]
(spit file updated)
(println "Updated" file)))
;; Regenerate uberscript with new version
(println "\nRebuilding uberscript...")
(shell "bb build")
(println "\nVersion bumped to" new-version))}
build {:doc "Generate uberscript from source"
:task (do
(println "Building uberscript...")
;; Generate skill_content.clj from SKILL.md
(let [skill-md (slurp "resources/skills/brepl/SKILL.md")
escaped (-> skill-md
(clojure.string/replace "\\" "\\\\")
(clojure.string/replace "\"" "\\\""))
content (str "(ns brepl.lib.skill-content\n"
" \"Embedded skill content for uberscript distribution.\")\n\n"
"(def skill-md\n \"" escaped "\")\n")]
(spit "src/brepl/lib/skill_content.clj" content))
(println "Generated skill_content.clj")
(babashka.fs/delete-if-exists "brepl")
(shell "bb uberscript brepl src/brepl.clj")
(let [content (slurp "brepl")]
(spit "brepl" (str "#!/usr/bin/env -S bb --classpath \"\"\n" content)))
(shell "chmod +x brepl")
(println "Done. Generated: brepl"))}}}