blob: 3140675f953b1873bd47de64d4fe04b51c7a3cf9 (
plain)
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
|
#!/usr/bin/env nomsu -V2.5.5.5
#
Tool to find and replace one tree with another.
nomsu tools/replace.nom [-i] tree_to_replace replacement file1 file2 directory1 ...
If "-i" is the first argument, replacements will be performed in-place. Otherwise, the
upgraded code will be printed.
use "lib/os.nom"
%args = (command line args)
%inplace = (no)
if (%args.1 is "-i"):
%inplace = (yes)
%args::remove index 1
if ((length of %args) < 3):
say "Usage: nomsu tools/replace.nom [-i] tree_to_replace replacement files..."
lua> "os.exit(1)"
%pattern = (parse (%args::remove index 1))
%replacement = (parse (%args::remove index 1))
for %path in %args:
for file %filename in %path:
unless (any [%filename matches "%.nom$", %filename == "-", %filename == "stdin"]):
do next %filename
%tree = (parse (read file %filename) from %filename)
%tree2 = (%tree with %pattern ~> %replacement)
if (%tree2 == %tree):
say "No changes in \%filename"
do next %filename
%text = ".."
#!/usr/bin/env nomsu -V\(%tree.version or (Nomsu version))
\(%tree2 as nomsu)
if:
%inplace:
say "Replaced in \%filename"
write %text to file %filename
else: say %text
|