Author: esr
Date: Sun Apr 29 23:56:57 2007
New Revision: 17175
URL: http://svn.gna.org/viewcvs/wesnoth?rev=17175&view=rev
Log:
upconvert now translates terrain_likes clauses.
Modified:
trunk/data/tools/upconvert
Modified: trunk/data/tools/upconvert
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/data/tools/upconvert?rev=17175&r1=17174&r2=17175&view=diff
==============================================================================
--- trunk/data/tools/upconvert (original)
+++ trunk/data/tools/upconvert Sun Apr 29 23:56:57 2007
@@ -7,6 +7,9 @@
# All conversion logic for lifting WML and maps from older versions of the
# 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.
@@ -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.
-
-import sys, os, re, getopt
+# 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, curses.ascii
filemoves = {
# Older includes all previous to 1.3.1.
@@ -586,9 +590,25 @@
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 @@
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
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits