Author: esr
Date: Thu Apr 19 14:43:06 2007
New Revision: 16934
URL: http://svn.gna.org/viewcvs/wesnoth?rev=16934&view=rev
Log:
upconvert logic is complete but untested.
Modified:
trunk/data/tools/upconvert
Modified: trunk/data/tools/upconvert
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/data/tools/upconvert?rev=16934&r1=16933&r2=16934&view=diff
==============================================================================
--- trunk/data/tools/upconvert (original)
+++ trunk/data/tools/upconvert Thu Apr 19 14:43:06 2007
@@ -52,6 +52,9 @@
{"red-mage+female-attack-staff1.png":
"red-mage+female-attack-staff-1.png"},
{"red-mage+female-attack-staff2.png":
"red-mage+female-attack-staff-2.png"},
),
+ # An empty sentinel value at end is required.
+ # Always have the current version here.
+ "1.3.2" : (),
}
def allcfgfiles(dir):
@@ -70,6 +73,7 @@
Convert Battle of Wesnoth WML from older versions to newer ones.
Options may be any of these:
-h, --help Emit this help message and quit
+ -d, --dryrun List changes but don't perform them.
-o, --oldversion Specify version to begin with.
The required dirpath argument may be a colon-separated directory list.
""")
@@ -79,14 +83,56 @@
"oldversion=",
])
oldversion = 'older'
+ dryrun = False
for (switch, val) in options:
if switch in ('-h', '--help'):
help()
sys.exit(0)
elif switch in ('-o', '--oldversion'):
oldversion = val
+ elif switch in ('-d', '--dryrun'):
+ dryrun = True
- datafiles = allcfgfiles(".")
+ # Compute the series of version upgrades to perform, and describe it.
+ versions = filemoves.keys()
+ versions.sort()
+ versions = [versions[-1]] + versions[:-1] # Move 'older' to front
+ if oldversion in versions:
+ versions = versions[versions.index(oldversion):]
+ else:
+ print >>sys.stderr, "upconvert: unrecognized version."
+ sys.exit(1)
+ explain = "Performing upgrades for:"
+ for i in range(len(versions)-1):
+ explain += " %s -> %s," % (versions[i], versions[i+1])
+ sys.stdout.write(explain[:-1] + ".\n")
+ conversions = map(lambda x: filemoves[x], versions[:-1])
- # More to go here
- print datafiles
+ # Perform resource file substitutions
+ ofp = None
+ for fn in allcfgfiles("."):
+ if dryrun:
+ ifp = open(fn)
+ else:
+ os.rename(fn, fn + "-bak")
+ ifp = open(fn + "-bak")
+ ofp = open(fn, "w")
+ modified = False
+ for enumerate(i, line) in :
+ transformed = line
+ for step in conversions:
+ for (old, new) in step.items():
+ transformed = transformed.replace(old, new)
+ if ofp:
+ ofp.write(transformed)
+ if transformed != line:
+ print "%s, line %d: %s -> %s" % \
+ (fn, i+1, line.strip(), transformed.strip())
+ modified = True
+ if ofp:
+ ofp.close()
+ if not modified:
+ # Nothing changed, move the backup file back into place.
+ os.rename(fn + "-bak", fn)
+
+# upconvert ends here
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits