"""fixversions - Fix version numbers in .plist files to match current python version and date""" import sys import os import time import plistlib SHORTVERSION = "%d.%d" % (sys.version_info[0], sys.version_info[1]) if sys.version_info[2]: SHORTVERSION = SHORTVERSION + ".%d" % sys.version_info[2] if sys.version_info[3] != 'final': SHORTVERSION = SHORTVERSION + "%s%d" % (sys.version_info[3], sys.version_info[4]) COPYRIGHT = "(c) %d Python Software Foundation." % time.gmtime()[0] LONGVERSION = SHORTVERSION + ", " + COPYRIGHT def fix(file): plist = plistlib.Plist.fromFile(file) changed = False if plist.has_key("CFBundleGetInfoString") and \ plist["CFBundleGetInfoString"] != LONGVERSION: plist["CFBundleGetInfoString"] = LONGVERSION changed = True if plist.has_key("CFBundleLongVersionString") and \ plist["CFBundleLongVersionString"] != LONGVERSION: plist["CFBundleLongVersionString"] = LONGVERSION changed = True if plist.has_key("NSHumanReadableCopyright") and \ plist["NSHumanReadableCopyright"] != COPYRIGHT: plist["NSHumanReadableCopyright"] = COPYRIGHT changed = True if plist.has_key("CFBundleVersion") and \ plist["CFBundleVersion"] != SHORTVERSION: plist["CFBundleVersion"] = SHORTVERSION changed = True if plist.has_key("CFBundleShortVersionString") and \ plist["CFBundleShortVersionString"] != SHORTVERSION: plist["CFBundleShortVersionString"] = SHORTVERSION changed = True if changed: os.rename(file, file + '~') plist.write(file) def main(): if len(sys.argv) < 2: print "Usage: %s plistfile ..." % sys.argv[0] print "or: %s -a fix standard Python plist files" sys.exit(1) if sys.argv[1] == "-a": files = [ "../OSXResources/app/Info.plist", "../OSXResources/framework/version.plist", "../Tools/IDE/PackageManager.plist", "../Tools/IDE/PythonIDE.plist", "../scripts/BuildApplet.plist" ] if not os.path.exists(files[0]): print "%s -a must be run from Mac/OSX directory" sys.exit(1) else: files = sys.argv[1:] for file in files: fix(file) sys.exit(0) if __name__ == "__main__": main()