mirror of
https://github.com/holub/mame
synced 2025-06-29 23:48:56 +03:00
Make verinfo.py capable of producing Info.plist for OSX
This commit is contained in:
parent
89e74e4b9c
commit
a7eb44f3e2
@ -2,48 +2,71 @@
|
|||||||
|
|
||||||
from __future__ import with_statement
|
from __future__ import with_statement
|
||||||
|
|
||||||
import sys
|
|
||||||
import os
|
import os
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
|
||||||
def usage():
|
|
||||||
sys.stderr.write('Usage: verinfo.py [-b mame|mess|ume] <filename>\n')
|
|
||||||
return 0
|
|
||||||
|
|
||||||
build = "mame"
|
def parse_args():
|
||||||
|
def usage():
|
||||||
if (len(sys.argv)==1):
|
sys.stderr.write('Usage: verinfo.py [-b mame|mess|ume] [-r|-p] <filename>\n')
|
||||||
usage()
|
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if (sys.argv[1]=='-b'):
|
flags = True
|
||||||
if (sys.argv[2]=='mame'):
|
target = 'mame'
|
||||||
build = "mame"
|
input = None
|
||||||
elif (sys.argv[2]=='mess'):
|
output = 'rc'
|
||||||
build = "mess"
|
i = 1
|
||||||
elif (sys.argv[2]=='ume'):
|
while i < len(sys.argv):
|
||||||
build = "ume"
|
if flags and (sys.argv[i] == '-r'):
|
||||||
else :
|
output = 'rc'
|
||||||
|
elif flags and (sys.argv[i] == '-p'):
|
||||||
|
output = 'plist'
|
||||||
|
elif flags and (sys.argv[i] == '-b'):
|
||||||
|
i += 1;
|
||||||
|
if (i >= len(sys.argv)) or (sys.argv[i] not in ('mame', 'mess', 'ume')):
|
||||||
usage()
|
usage()
|
||||||
sys.exit(1)
|
else:
|
||||||
|
target = sys.argv[i]
|
||||||
|
elif flags and (sys.argv[i] == '--'):
|
||||||
|
flags = False
|
||||||
|
elif flags and sys.argv[i].startswith('-'):
|
||||||
|
usage()
|
||||||
|
elif input is not None:
|
||||||
|
usage()
|
||||||
|
else:
|
||||||
|
input = sys.argv[i]
|
||||||
|
i += 1
|
||||||
|
if input is None:
|
||||||
|
usage()
|
||||||
|
return target, input, output
|
||||||
|
|
||||||
|
|
||||||
|
def extract_version(input):
|
||||||
|
pattern = re.compile('\s+BARE_BUILD_VERSION\s+"(([^."]+)\.([^."]+))"')
|
||||||
|
for line in input.readlines():
|
||||||
|
match = pattern.search(line)
|
||||||
|
if match:
|
||||||
|
return match.group(1), match.group(2), match.group(3)
|
||||||
|
return None, None, None
|
||||||
|
|
||||||
|
|
||||||
|
build, srcfile, outfmt = parse_args()
|
||||||
|
|
||||||
srcfile = sys.argv[len(sys.argv)-1]
|
|
||||||
try:
|
try:
|
||||||
fp = open(srcfile, 'rb')
|
fp = open(srcfile, 'rb')
|
||||||
except IOError:
|
except IOError:
|
||||||
sys.stderr.write("Unable to open source file '%s'" % srcfile)
|
sys.stderr.write("Unable to open source file '%s'\n" % srcfile)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
for line in fp.readlines():
|
version_string, version_major, version_minor = extract_version(fp)
|
||||||
if line.find("BARE_BUILD_VERSION")!=-1 and line.find('"')!=-1 and line.find('.')!=-1:
|
|
||||||
version_string = line[line.find('"')+1:]
|
|
||||||
version_string = version_string[0:version_string.find('"')]
|
|
||||||
break
|
|
||||||
|
|
||||||
version_major = version_string[0:version_string.find('.')]
|
|
||||||
version_minor = version_string[version_string.find('.')+1:]
|
|
||||||
version_build = "0"
|
version_build = "0"
|
||||||
version_subbuild = "0"
|
version_subbuild = "0"
|
||||||
if (build == "mess") :
|
if not version_string:
|
||||||
|
sys.stderr.write("Unable to extract version from source file '%s'\n" % srcfile)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
if build == "mess":
|
||||||
# MESS
|
# MESS
|
||||||
author = "MESS Team";
|
author = "MESS Team";
|
||||||
comments = "Multi Emulation Super System";
|
comments = "Multi Emulation Super System";
|
||||||
@ -52,7 +75,8 @@ if (build == "mess") :
|
|||||||
internal_name = "MESS";
|
internal_name = "MESS";
|
||||||
original_filename = "MESS";
|
original_filename = "MESS";
|
||||||
product_name = "MESS";
|
product_name = "MESS";
|
||||||
elif (build == "ume") :
|
bundle_identifier = "org.mamedev.mess"
|
||||||
|
elif build == "ume":
|
||||||
# UME
|
# UME
|
||||||
author = "MAME and MESS Team"
|
author = "MAME and MESS Team"
|
||||||
comments = "Universal Machine Emulator"
|
comments = "Universal Machine Emulator"
|
||||||
@ -61,7 +85,8 @@ elif (build == "ume") :
|
|||||||
internal_name = "UME"
|
internal_name = "UME"
|
||||||
original_filename = "UME"
|
original_filename = "UME"
|
||||||
product_name = "UME"
|
product_name = "UME"
|
||||||
else :
|
bundle_identifier = "org.mamedev.ume"
|
||||||
|
else:
|
||||||
# MAME
|
# MAME
|
||||||
author = "Nicola Salmoria and the MAME Team"
|
author = "Nicola Salmoria and the MAME Team"
|
||||||
comments = "Multiple Arcade Machine Emulator"
|
comments = "Multiple Arcade Machine Emulator"
|
||||||
@ -70,47 +95,66 @@ else :
|
|||||||
internal_name = "MAME"
|
internal_name = "MAME"
|
||||||
original_filename = "MAME"
|
original_filename = "MAME"
|
||||||
product_name = "MAME"
|
product_name = "MAME"
|
||||||
|
bundle_identifier = "org.mamedev.mame"
|
||||||
|
|
||||||
legal_copyright = "Copyright Nicola Salmoria and the MAME team"
|
legal_copyright = "Copyright Nicola Salmoria and the MAME team"
|
||||||
|
|
||||||
print("VS_VERSION_INFO VERSIONINFO")
|
if outfmt == 'rc':
|
||||||
print("\tFILEVERSION %s,%s,%s,%s" % (version_major, version_minor, version_build, version_subbuild))
|
print("VS_VERSION_INFO VERSIONINFO")
|
||||||
print("\tPRODUCTVERSION %s,%s,%s,%s" % (version_major, version_minor, version_build, version_subbuild))
|
print("\tFILEVERSION %s,%s,%s,%s" % (version_major, version_minor, version_build, version_subbuild))
|
||||||
print("\tFILEFLAGSMASK 0x3fL")
|
print("\tPRODUCTVERSION %s,%s,%s,%s" % (version_major, version_minor, version_build, version_subbuild))
|
||||||
if (version_build == 0) :
|
print("\tFILEFLAGSMASK 0x3fL")
|
||||||
|
if (version_build == 0) :
|
||||||
print("\tFILEFLAGS 0x0L")
|
print("\tFILEFLAGS 0x0L")
|
||||||
else :
|
else :
|
||||||
print("\tFILEFLAGS VS_FF_PRERELEASE")
|
print("\tFILEFLAGS VS_FF_PRERELEASE")
|
||||||
print("\tFILEOS VOS_NT_WINDOWS32")
|
print("\tFILEOS VOS_NT_WINDOWS32")
|
||||||
print("\tFILETYPE VFT_APP")
|
print("\tFILETYPE VFT_APP")
|
||||||
print("\tFILESUBTYPE VFT2_UNKNOWN")
|
print("\tFILESUBTYPE VFT2_UNKNOWN")
|
||||||
print("BEGIN")
|
print("BEGIN")
|
||||||
print("\tBLOCK \"StringFileInfo\"")
|
print("\tBLOCK \"StringFileInfo\"")
|
||||||
print("\tBEGIN")
|
print("\tBEGIN")
|
||||||
print("#ifdef UNICODE")
|
print("#ifdef UNICODE")
|
||||||
print("\t\tBLOCK \"040904b0\"")
|
print("\t\tBLOCK \"040904b0\"")
|
||||||
print("#else")
|
print("#else")
|
||||||
print("\t\tBLOCK \"040904E4\"")
|
print("\t\tBLOCK \"040904E4\"")
|
||||||
print("#endif")
|
print("#endif")
|
||||||
print("\t\tBEGIN")
|
print("\t\tBEGIN")
|
||||||
print("\t\t\tVALUE \"Author\", \"%s\\0\"" % author)
|
print("\t\t\tVALUE \"Author\", \"%s\\0\"" % author)
|
||||||
print("\t\t\tVALUE \"Comments\", \"%s\\0\"" % comments)
|
print("\t\t\tVALUE \"Comments\", \"%s\\0\"" % comments)
|
||||||
print("\t\t\tVALUE \"CompanyName\", \"%s\\0\"" % company_name)
|
print("\t\t\tVALUE \"CompanyName\", \"%s\\0\"" % company_name)
|
||||||
print("\t\t\tVALUE \"FileDescription\", \"%s\\0\"" % file_description)
|
print("\t\t\tVALUE \"FileDescription\", \"%s\\0\"" % file_description)
|
||||||
print("\t\t\tVALUE \"FileVersion\", \"%s, %s, %s, %s\\0\"" % (version_major, version_minor, version_build, version_subbuild))
|
print("\t\t\tVALUE \"FileVersion\", \"%s, %s, %s, %s\\0\"" % (version_major, version_minor, version_build, version_subbuild))
|
||||||
print("\t\t\tVALUE \"InternalName\", \"%s\\0\"" % internal_name)
|
print("\t\t\tVALUE \"InternalName\", \"%s\\0\"" % internal_name)
|
||||||
print("\t\t\tVALUE \"LegalCopyright\", \"%s\\0\"" % legal_copyright)
|
print("\t\t\tVALUE \"LegalCopyright\", \"%s\\0\"" % legal_copyright)
|
||||||
print("\t\t\tVALUE \"OriginalFilename\", \"%s\\0\"" % original_filename)
|
print("\t\t\tVALUE \"OriginalFilename\", \"%s\\0\"" % original_filename)
|
||||||
print("\t\t\tVALUE \"ProductName\", \"%s\\0\"" % product_name)
|
print("\t\t\tVALUE \"ProductName\", \"%s\\0\"" % product_name)
|
||||||
print("\t\t\tVALUE \"ProductVersion\", \"%s\\0\"" % version_string)
|
print("\t\t\tVALUE \"ProductVersion\", \"%s\\0\"" % version_string)
|
||||||
print("\t\tEND")
|
print("\t\tEND")
|
||||||
print("\tEND")
|
print("\tEND")
|
||||||
print("\tBLOCK \"VarFileInfo\"")
|
print("\tBLOCK \"VarFileInfo\"")
|
||||||
print("\tBEGIN")
|
print("\tBEGIN")
|
||||||
print("#ifdef UNICODE")
|
print("#ifdef UNICODE")
|
||||||
print("\t\tVALUE \"Translation\", 0x409, 1200")
|
print("\t\tVALUE \"Translation\", 0x409, 1200")
|
||||||
print("#else")
|
print("#else")
|
||||||
print("\t\tVALUE \"Translation\", 0x409, 1252")
|
print("\t\tVALUE \"Translation\", 0x409, 1252")
|
||||||
print("#endif")
|
print("#endif")
|
||||||
print("\tEND")
|
print("\tEND")
|
||||||
print("END")
|
print("END")
|
||||||
|
elif outfmt == 'plist':
|
||||||
|
print('<?xml version="1.0" encoding="UTF-8"?>')
|
||||||
|
print('<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">')
|
||||||
|
print('<plist version="1.0">')
|
||||||
|
print('<dict>')
|
||||||
|
print('\t<key>CFBundleDisplayName</key>')
|
||||||
|
print('\t<string>%s</string>' % product_name)
|
||||||
|
print('\t<key>CFBundleIdentifier</key>')
|
||||||
|
print('\t<string>%s</string>' % bundle_identifier)
|
||||||
|
print('\t<key>CFBundleInfoDictionaryVersion</key>')
|
||||||
|
print('\t<string>6.0</string>')
|
||||||
|
print('\t<key>CFBundleName</key>')
|
||||||
|
print('\t<string>%s</string>' % product_name)
|
||||||
|
print('\t<key>CFBundleShortVersionString</key>')
|
||||||
|
print('\t<string>%s.%s.%s</string>' % (version_major, version_minor, version_build))
|
||||||
|
print('</dict>')
|
||||||
|
print('</plist>')
|
||||||
|
Loading…
Reference in New Issue
Block a user