diff options
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/apply_vimgrep_updates.fnl | 39 | ||||
| -rwxr-xr-x | scripts/apply_vimgrep_updates.js | 29 |
2 files changed, 39 insertions, 29 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) diff --git a/scripts/apply_vimgrep_updates.js b/scripts/apply_vimgrep_updates.js deleted file mode 100755 index 9707aab..0000000 --- a/scripts/apply_vimgrep_updates.js +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env bun - -const main = async () => { - let count = 0 - for await (const line of console) { - const [_, filepath, row, _col, text] = line.match(/(.*):(\d+):(\d+):(.*)/) ?? [] - if (filepath) { - const isApplied = await apply_edit(filepath, Number(row), text); - if (isApplied) count++ - } - } - return count -} - -const apply_edit = async (filepath, row, text) => { - if (!Number.isFinite(row) || row <= 0) return false; - const file = Bun.file(filepath) - const lines = (await file.text()).split('\n') - if (lines.length > row) { - lines[row - 1] = text - await Bun.write(filepath, lines.join('\n')) - return true - } - return false -} - -const changesCount = await main() -console.log(`Applied ${changesCount} changes`) - |
