blob: 45429302a43680a2456f910161def15dd8b45803 (
plain) (
blame)
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
|
#!/usr/bin/env -S fennel --lua luajit
;; TODO: Support -A -B outputs for context
(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)
(M.main)
|