diff options
| author | 2025-03-04 11:23:26 +0900 | |
|---|---|---|
| committer | 2025-03-04 11:23:26 +0900 | |
| commit | 665705d06df5a81bfb73e078bd6076ef3b70ac8b (patch) | |
| tree | 9e210eb57005f6666536f1d4f001f9ca28e5e375 /tools | |
| parent | Prevent 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.janet | 44 |
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))) |
