diff options
author | 2019-12-15 21:38:54 +1100 | |
---|---|---|
committer | 2019-12-15 21:38:54 +1100 | |
commit | 202d06ffb0d9a55c484dbc71c657e24b9323efe2 (patch) | |
tree | b74c60ee1e06263d16f69d7bd7ca6516e316acbe /scripts/minimaws/lib/lxparse.py | |
parent | 601e0668badf61b00ebd86aed995b3e3cf5c17e1 (diff) |
minimaws: fill in software list pages, load software list ROM information
Diffstat (limited to 'scripts/minimaws/lib/lxparse.py')
-rw-r--r-- | scripts/minimaws/lib/lxparse.py | 51 |
1 files changed, 47 insertions, 4 deletions
diff --git a/scripts/minimaws/lib/lxparse.py b/scripts/minimaws/lib/lxparse.py index 91208eb7fb1..62ff18e8d5a 100644 --- a/scripts/minimaws/lib/lxparse.py +++ b/scripts/minimaws/lib/lxparse.py @@ -286,7 +286,47 @@ class ListXmlHandler(ElementHandler): pass +class DataAreaHandler(ElementHandler): + def __init__(self, parent, **kwargs): + super(DataAreaHandler, self).__init__(parent=parent, **kwargs) + self.dbcurs = parent.dbcurs + self.part = parent.id + + def startChildElement(self, name, attrs): + if name == 'rom': + crc = attrs.get('crc') + sha1 = attrs.get('sha1') + if ('name' in attrs) and (crc is not None) and (sha1 is not None): + crc = int(crc, 16) + sha1 = sha1.lower() + self.dbcurs.add_rom(crc, sha1) + status = attrs.get('status', 'good') + self.dbcurs.add_softwareromdump(self.part, attrs['name'], crc, sha1, status != 'good') + self.setChildHandler(name, attrs, self.IGNORE) + + +class DiskAreaHandler(ElementHandler): + def __init__(self, parent, **kwargs): + super(DiskAreaHandler, self).__init__(parent=parent, **kwargs) + self.dbcurs = parent.dbcurs + self.part = parent.id + + def startChildElement(self, name, attrs): + if name == 'disk': + sha1 = attrs.get('sha1') + if sha1 is not None: + sha1 = sha1.lower() + self.dbcurs.add_disk(sha1) + status = attrs.get('status', 'good') + self.dbcurs.add_softwarediskdump(self.part, attrs['name'], sha1, status != 'good') + self.setChildHandler(name, attrs, self.IGNORE) + + class SoftwarePartHandler(ElementHandler): + CHILD_HANDLERS = { + 'dataarea': DataAreaHandler, + 'diskarea': DiskAreaHandler } + def __init__(self, parent, **kwargs): super(SoftwarePartHandler, self).__init__(parent=parent, **kwargs) self.dbcurs = parent.dbcurs @@ -296,10 +336,13 @@ class SoftwarePartHandler(ElementHandler): self.id = self.dbcurs.add_softwarepart(self.software, attrs['name'], attrs['interface']) def startChildElement(self, name, attrs): - if name == 'feature': - self.dbcurs.add_softwarepartfeaturetype(attrs['name']) - self.dbcurs.add_softwarepartfeature(self.id, attrs['name'], attrs['value']) - self.setChildHandler(name, attrs, self.IGNORE) + if name in self.CHILD_HANDLERS: + self.setChildHandler(name, attrs, self.CHILD_HANDLERS[name](self)) + else: + if name == 'feature': + self.dbcurs.add_softwarepartfeaturetype(attrs['name']) + self.dbcurs.add_softwarepartfeature(self.id, attrs['name'], attrs['value']) + self.setChildHandler(name, attrs, self.IGNORE) class SoftwareHandler(ElementHandler): |