1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
#!/usr/bin/env python
# BATch files are useless,
# all we want is sed,
# but is is MSWindows so it's easier to re-invent the wheel, sigh
import sys
def main():
if len(sys.argv)<3:
print("Invalid number of arguments")
print("Usage: %s source-msi.xml destination-msi.xml TOKEN1=VALUE1 [TOKEN2=VALUE2 [..]]", sys.argv[0])
sys.exit(1)
src = sys.argv[1]
dst = sys.argv[2]
print("replacing tokens from file '%s' and saving to '%s'" % (src, dst))
data = open(src, 'rb').read().decode()
print("data=%i bytes %s" % (len(data), type(data)))
for kv in sys.argv[3:]:
try:
token, value = kv.split("=")
except ValueError:
print("skipping invalid token string '%s'" % kv)
continue
print("replacing %s with '%s' %s" % (token, value, type(token)))
data = data.replace("$%s" % token, value)
data = data.replace("${%s}" % token, value)
open(dst, 'wb').write(data.encode())
if __name__ == '__main__':
main()
|