Bugfix: releasing a program without a version-modifier on the interface
[0publish.git] / merge.py
blobb9b1f0972f9ca0ff2e90d253805d942dde5882ff
1 import os
2 from xml.dom import minidom, XMLNS_NAMESPACE
3 from zeroinstall.injector.namespaces import XMLNS_IFACE
4 from zeroinstall.injector import model, reader
6 def merge(data, local):
7 raise Exception('Sorry, merging with --local is not yet supported')
8 local_doc = minidom.parse(local)
9 master_doc = minidom.parseString(data)
11 for impl in local_doc.getElementsByTagNameNS(XMLNS_IFACE, 'implementation'):
12 new_impl = master_doc.importNode(impl, True)
13 while impl.parentNode is not local_doc:
14 impl = impl.parentNode
15 for attr in ['stability', 'released', 'main', 'arch', 'version']:
16 if impl.hasAttribute(attr) and not new_impl.hasAttribute(attr):
17 new_impl.setAttribute(attr, impl.getAttribute(attr))
19 master_doc.documentElement.appendChild(master_doc.createTextNode(' '))
20 master_doc.documentElement.appendChild(new_impl)
21 master_doc.documentElement.appendChild(master_doc.createTextNode('\n'))
22 print "Impl", new_impl
24 # minidom's writer loses the newline after the PI
25 return master_doc.toxml()