blob: f4a2b8c657b387e4824975d8c5d70c9fc12c578a (
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
42
43
44
45
46
47
48
|
#!/usr/bin/env nomsu -V6.15.13.8
#
Tool to automatically update code from old versions of Nomsu. Usage:
nomsu tools/upgrade.nom [-i] file1 file2 directory1 ...
If "-i" is the first argument, upgrades will be performed in-place. Otherwise, the
upgraded code will be printed.
use "compatibility"
use "filesystem"
use "consolecolor"
use "commandline"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
command line program with $args:
$inplace = ($args.i or $args.inplace)
$start_version = $args."upgrade-from"
if $start_version:
try:
use $start_version
..if it fails:
fail "Could not find upgrade rules for \$start_version"
$version = ($args."upgrade-to" or $(NOMSU VERSION))
$test = ($args.t or $args.test)
for $filename in $args.extras:
$file = (read file $filename)
unless $file:
fail "File does not exist: \$filename"
$leading_indent = ($file, matching "\n*([ ]*)")
$code = (NomsuCode from (Source $filename 1 (size of $file)) $file)
$tree = ($code parsed $start_version)
$uptree =
$tree upgraded from ($start_version or ($tree.version or $(NOMSU VERSION))) to
$version
$text = "\$leading_indent\($uptree as nomsu, text, with "\n" -> "\n\$leading_indent")"
when:
$inplace:
say "Upgraded \$filename"
write $text to file $filename
$test:
if ($uptree == $tree):
say (dim "\$filename will not be changed")
..else:
say (bright "\$filename will be changed")
else:
say $text inline
|