diff --git a/tools/fix_old_metadata_files.py b/tools/fix_old_metadata_files.py new file mode 100755 index 00000000..dfd8dd91 --- /dev/null +++ b/tools/fix_old_metadata_files.py @@ -0,0 +1,65 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import xml.dom.minidom as mdom +import codecs +import os + +folder = "/var/lib/pisi" + +def saveMetadata(data, file): + if data: + f = codecs.open(file, 'w', "utf-8") + f.write(data) + f.close() + return 0 + else: + return 1 + +def getNodeText(node, tag, default=None): + try : c = getTags(node, tag)[0].firstChild.data + except: c = default + return c + +def getTags(parent, childName): + return [x for x in parent.childNodes if x.nodeType == x.ELEMENT_NODE if x.tagName == childName] + +def addText(dom, parent, text): + cdata = dom.createTextNode(text) + parent.appendChild(cdata) + +def fixMetadata(metadata): + dom = mdom.parse(metadata) + pisi = dom.documentElement + + package = getTags(pisi, "Package")[0] + history = getTags(package, "History")[0] + item = package.removeChild(history) + + for update in history.childNodes: + if update.nodeType == update.ELEMENT_NODE: + try: + rno = getNodeText(update, "Release")[6:-5] + except TypeError: + return None + update.setAttribute("release", rno) + release = getTags(update, "Release")[0] + update.removeChild(release) + + addText(dom, package, " ") + package.appendChild(item) + addText(dom, package, "\n ") + return dom.toxml() + +def findMetadata(): + m = [] + for root, dirs, files in os.walk(folder): + if "metadata.xml" in files: + m.append(root + '/metadata.xml') + return m + +for file in findMetadata(): + if not saveMetadata(fixMetadata(file), file): + print "Guncellendi : ", file + else: + print "Hiç bir şey yapılmadı: ", file