upconvert now translates terrain_likes clauses.
This commit is contained in:
parent
fee9a9a168
commit
ed206aa128
1 changed files with 65 additions and 42 deletions
|
@ -8,6 +8,9 @@
|
|||
# markup to newer ones should live here. This includes resource path changes
|
||||
# and renames, also map format conversions.
|
||||
#
|
||||
# Takes any number of directories as arguments. Each directory is converted.
|
||||
# If no directiories are specified, acts on the current directory.
|
||||
#
|
||||
# The recommended procedure is this:
|
||||
# 1. Run it with --dryrun first to see what it will do.
|
||||
# 2. If the messages look good, run without --dryrun; the old content
|
||||
|
@ -20,9 +23,10 @@
|
|||
# undo the conversion.
|
||||
#
|
||||
# This script presently makes no effort to fix terrain codes outside of maps,
|
||||
# e.g. in terrain filters. It will barf on maps with custom terrains.
|
||||
# e.g. in terrain filters, except that it does handle terrain_liked.
|
||||
# It will barf on maps with custom terrains.
|
||||
|
||||
import sys, os, re, getopt
|
||||
import sys, os, re, getopt, curses.ascii
|
||||
|
||||
filemoves = {
|
||||
# Older includes all previous to 1.3.1.
|
||||
|
@ -586,9 +590,25 @@ if __name__ == '__main__':
|
|||
def texttransform(filename, lineno, line):
|
||||
"Resource-name transformation on text lines."
|
||||
transformed = line
|
||||
# First, do resource-file moves
|
||||
for step in fileconversions:
|
||||
for (old, new) in step:
|
||||
transformed = transformed.replace(old, new)
|
||||
# Now, handle terrain-liked=
|
||||
if "terrain_liked=" in transformed:
|
||||
(pre, terrain) = transformed.split("=")
|
||||
newterrains = []
|
||||
post = ""
|
||||
for c in terrain:
|
||||
if c in conversion1:
|
||||
newterrains.append(conversion1[c])
|
||||
elif curses.ascii.isspace(c):
|
||||
post += c
|
||||
else:
|
||||
print "%s, line %d: custom terrain %s ignored." \
|
||||
(filename, lineno+1, c)
|
||||
transformed = pre + "=" + ",".join(newterrains) + post
|
||||
# Report the changes
|
||||
if verbose > 0 and transformed != line:
|
||||
msg = "%s, line %d: %s -> %s" % \
|
||||
(filename, lineno+1, line.strip(), transformed.strip())
|
||||
|
@ -602,45 +622,48 @@ if __name__ == '__main__':
|
|||
else:
|
||||
maptransform = maptransform1
|
||||
|
||||
# Perform resource file substitutions
|
||||
ofp = None
|
||||
for fn in allcfgfiles("."):
|
||||
if verbose >= 3:
|
||||
print fn + ":"
|
||||
backup = fn + "-bak"
|
||||
if clean or revert:
|
||||
# Do housekeeping
|
||||
if os.path.exists(backup):
|
||||
if clean:
|
||||
print "upconvert: removing %s" % backup
|
||||
if not dryrun:
|
||||
os.remove(backup)
|
||||
elif revert:
|
||||
print "upconvert: reverting %s" % backup
|
||||
if not dryrun:
|
||||
os.rename(backup, fn)
|
||||
elif diffs:
|
||||
# Display diffs
|
||||
if os.path.exists(backup):
|
||||
print fn
|
||||
os.system("diff -u %s %s" % (backup, fn))
|
||||
else:
|
||||
# Do file conversions
|
||||
try:
|
||||
changed = translator(fn, maptransform, texttransform)
|
||||
if changed:
|
||||
print "upconvert: converting", fn
|
||||
if not dryrun:
|
||||
os.rename(fn, backup)
|
||||
ofp = open(fn, "w")
|
||||
ofp.write(changed)
|
||||
ofp.close()
|
||||
except maptransform_error, e:
|
||||
if e.level <= verbose:
|
||||
sys.stderr.write("upconvert: " + `e` + "\n")
|
||||
except:
|
||||
sys.stderr.write("upconvert: internal error on %s\n" % fn)
|
||||
(exc_type, exc_value, exc_traceback) = sys.exc_info()
|
||||
raise exc_type, exc_value, exc_traceback
|
||||
if not arguments:
|
||||
arguments = ["."]
|
||||
|
||||
for dir in arguments:
|
||||
ofp = None
|
||||
for fn in allcfgfiles(dir):
|
||||
if verbose >= 3:
|
||||
print fn + ":"
|
||||
backup = fn + "-bak"
|
||||
if clean or revert:
|
||||
# Do housekeeping
|
||||
if os.path.exists(backup):
|
||||
if clean:
|
||||
print "upconvert: removing %s" % backup
|
||||
if not dryrun:
|
||||
os.remove(backup)
|
||||
elif revert:
|
||||
print "upconvert: reverting %s" % backup
|
||||
if not dryrun:
|
||||
os.rename(backup, fn)
|
||||
elif diffs:
|
||||
# Display diffs
|
||||
if os.path.exists(backup):
|
||||
print fn
|
||||
os.system("diff -u %s %s" % (backup, fn))
|
||||
else:
|
||||
# Do file conversions
|
||||
try:
|
||||
changed = translator(fn, maptransform, texttransform)
|
||||
if changed:
|
||||
print "upconvert: converting", fn
|
||||
if not dryrun:
|
||||
os.rename(fn, backup)
|
||||
ofp = open(fn, "w")
|
||||
ofp.write(changed)
|
||||
ofp.close()
|
||||
except maptransform_error, e:
|
||||
if e.level <= verbose:
|
||||
sys.stderr.write("upconvert: " + `e` + "\n")
|
||||
except:
|
||||
sys.stderr.write("upconvert: internal error on %s\n" % fn)
|
||||
(exc_type, exc_value, exc_traceback) = sys.exc_info()
|
||||
raise exc_type, exc_value, exc_traceback
|
||||
|
||||
# upconvert ends here
|
||||
|
|
Loading…
Add table
Reference in a new issue