aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorMichael Camilleri <mike@inqk.net>2025-03-04 11:23:26 +0900
committerMichael Camilleri <mike@inqk.net>2025-03-04 11:23:26 +0900
commit665705d06df5a81bfb73e078bd6076ef3b70ac8b (patch)
tree9e210eb57005f6666536f1d4f001f9ca28e5e375 /tools
parentPrevent multi-scheduling with os/proc-wait. (address #1562) (diff)
Add Janet script to update copyright disclaimer
Diffstat (limited to 'tools')
-rw-r--r--tools/update_copyright.janet44
1 files changed, 44 insertions, 0 deletions
diff --git a/tools/update_copyright.janet b/tools/update_copyright.janet
new file mode 100644
index 00000000..04758fb6
--- /dev/null
+++ b/tools/update_copyright.janet
@@ -0,0 +1,44 @@
+(def usage (string "usage: janet " (first (dyn :args)) " <last-year> <this-year>"))
+
+(def ignores [".git"])
+(def exts [".c" ".h" ".janet"])
+
+(defn arg [i]
+ (defn bail [] (print usage) (quit))
+ (if-not (= 3 (length (dyn :args)))
+ (bail)
+ (if-let [val (get (dyn :args) i)]
+ val
+ (bail))))
+
+(def oy (arg 1))
+(def ny (arg 2))
+(def od (string "Copyright (c) " oy " Calvin Rose"))
+(def nd (string "Copyright (c) " ny " Calvin Rose"))
+
+(defn join [dir name]
+ (os/realpath (string dir "/" name)))
+
+(defn add-children [dir paths]
+ (loop [name :in (os/dir dir)
+ :unless (has-value? ignores name)]
+ (array/push paths (join dir name))))
+
+(defn ends-in? [exts s]
+ (find (fn [ext] (string/has-suffix? ext s)) exts))
+
+(defn update-disclaimer [path]
+ (if-let [_ (ends-in? exts path)
+ oc (slurp path)
+ pos (string/find od oc)
+ nc (string (string/slice oc 0 pos) nd (string/slice oc (+ pos (length od))))]
+ (spit path nc)))
+
+(def cwd (os/cwd))
+(def paths (if (string/has-suffix? "janet" cwd)
+ @[cwd]
+ @[(join cwd "..")]))
+(loop [p :in paths]
+ (if (= :directory ((os/stat p) :mode))
+ (add-children p paths)
+ (update-disclaimer p)))