Files
pisi/scripts/fix_old_metadata_files.py
T
2019-06-06 01:31:19 +03:00

62 lines
1.7 KiB
Python
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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 True
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():
for root, dirs, files in os.walk(folder):
if "metadata.xml" in files:
yield (root + '/metadata.xml')
for file in findMetadata():
if saveMetadata(fixMetadata(file), file):
print(("Güncellendi : ", file))
else:
print(("Hiç bir şey yapılmadı: ", file))