aboutsummaryrefslogtreecommitdiff
path: root/scripts/apply_vimgrep_updates.fnl
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2025-10-14 09:53:33 +0530
committerAkshay Nair <phenax5@gmail.com>2025-10-21 13:39:45 +0530
commit94bb19748d3bb8636cf252539b8f0be18f46515a (patch)
tree8029e727bd4a8d2a1282cd9b08b9cf8d6c3e72ce /scripts/apply_vimgrep_updates.fnl
parent2fa61e7942d899c7d883d3f5a82e7623740ebb6b (diff)
downloadkakoune-config-94bb19748d3bb8636cf252539b8f0be18f46515a.tar.gz
kakoune-config-94bb19748d3bb8636cf252539b8f0be18f46515a.zip
Switch grep update script to fnl
Diffstat (limited to 'scripts/apply_vimgrep_updates.fnl')
-rwxr-xr-xscripts/apply_vimgrep_updates.fnl39
1 files changed, 39 insertions, 0 deletions
diff --git a/scripts/apply_vimgrep_updates.fnl b/scripts/apply_vimgrep_updates.fnl
new file mode 100755
index 0000000..b70e93e
--- /dev/null
+++ b/scripts/apply_vimgrep_updates.fnl
@@ -0,0 +1,39 @@
+#!/usr/bin/env -S fennel --lua luajit
+
+(local M {})
+
+(fn M.main []
+ (local write-count (M.apply-vimgrep-changes))
+ (print (.. "Applied " write-count " changes")))
+
+(fn M.apply-vimgrep-changes []
+ (var count 0)
+ (each [line (io.lines)]
+ (local (filepath linenr _ text) (M.parse-vimgrep line))
+ (when filepath
+ (local applied? (M.update-line filepath linenr text))
+ (when applied?
+ (set count (+ count 1)))))
+ count)
+
+(fn M.parse-vimgrep [line]
+ (local (filepath linenr col text) (string.match line "(.*):(%d+):(%d+):(.*)"))
+ (values filepath (tonumber linenr) col text))
+
+(fn M.update-line [filepath linenr text]
+ (local lines (M.read-lines filepath))
+ (var written? false)
+ (when (and (> (length lines) linenr) (not= (. lines linenr) text))
+ (set (. lines linenr) text)
+ (local file (io.open filepath :w))
+ (file:write (table.concat lines "\n"))
+ (file:close)
+ (set written? true))
+ written?)
+
+(fn M.read-lines [filepath]
+ (local file (io.open filepath :r))
+ (local lines [])
+ (each [line (file:lines)] (table.insert lines line))
+ (file:close)
+ lines)