Correctly detect old-style GPG-signed interfaces.
[0publish.git] / merge.py
blobfa031940715bd38d90292720f87bc2ff5d0337fb
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 local_doc = minidom.parse(local)
8 master_doc = minidom.parseString(data)
10 for impl in local_doc.getElementsByTagNameNS(XMLNS_IFACE, 'implementation'):
11 new_impl = master_doc.importNode(impl, True)
12 while impl.parentNode is not local_doc:
13 impl = impl.parentNode
14 for attr in ['stability', 'released', 'main', 'arch', 'version']:
15 if impl.hasAttribute(attr) and not new_impl.hasAttribute(attr):
16 new_impl.setAttribute(attr, impl.getAttribute(attr))
18 master_doc.documentElement.appendChild(master_doc.createTextNode(' '))
19 master_doc.documentElement.appendChild(new_impl)
20 master_doc.documentElement.appendChild(master_doc.createTextNode('\n'))
21 print "Impl", new_impl
23 # minidom's writer loses the newline after the PI
24 return master_doc.toxml()