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, --local 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()