Change to project/trunk,tags,branches style
This commit is contained in:
Executable
+84
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
import sys
|
||||
import os
|
||||
import codecs
|
||||
import xml.dom.minidom as mdom
|
||||
|
||||
def find_pspecs(folder):
|
||||
paks = []
|
||||
for root, dirs, files in os.walk(folder):
|
||||
if "pspec.xml" in files:
|
||||
paks.append(root)
|
||||
# dont walk into the versioned stuff
|
||||
if ".svn" in dirs:
|
||||
dirs.remove(".svn")
|
||||
return paks
|
||||
|
||||
def addText(doc, parent, text):
|
||||
cdata =doc.createTextNode(text)
|
||||
parent.appendChild(cdata)
|
||||
|
||||
def getTags(parent, childName):
|
||||
return [x for x in parent.childNodes if x.nodeType == x.ELEMENT_NODE if x.tagName == childName]
|
||||
|
||||
def getNodeText(node, tag, default=None):
|
||||
try:
|
||||
c = getTags(node, tag)[0].firstChild.data
|
||||
except:
|
||||
c = default
|
||||
return c
|
||||
|
||||
def newNode(doc, tag, text):
|
||||
node = doc.createElement(tag)
|
||||
cdata = doc.createTextNode(text)
|
||||
node.appendChild(cdata)
|
||||
return node
|
||||
|
||||
def fixIndent(doc, node):
|
||||
for x in node.childNodes:
|
||||
if x.nodeType == x.ELEMENT_NODE:
|
||||
if x.tagName == "Update":
|
||||
fixIndent(doc, x)
|
||||
else:
|
||||
x.data = "\n" + x.data[5:]
|
||||
|
||||
def fixTags(doc, hist):
|
||||
for update in hist.childNodes:
|
||||
if update.nodeType == update.ELEMENT_NODE:
|
||||
rno = getNodeText(update, "Release")
|
||||
update.setAttribute("release", rno)
|
||||
if rno == "1":
|
||||
comment = newNode(doc, "Comment", "First release.")
|
||||
paker = getTags(getTags(doc.documentElement, "Source")[0], "Packager")[0]
|
||||
name = newNode(doc, "Name", getNodeText(paker, "Name"))
|
||||
email = newNode(doc, "Email", getNodeText(paker, "Email"))
|
||||
else:
|
||||
comment = newNode(doc, "Comment", "FIXHISTORY")
|
||||
name = newNode(doc, "Name", "FIXHISTORY")
|
||||
email = newNode(doc, "Email", "FIXHISTORY")
|
||||
update.replaceChild(comment, getTags(update, "Release")[0])
|
||||
addText(doc, update, " ")
|
||||
update.appendChild(name)
|
||||
addText(doc, update, "\n ")
|
||||
update.appendChild(email)
|
||||
addText(doc, update, "\n ")
|
||||
|
||||
def fixPspec(path):
|
||||
doc = mdom.parse(path)
|
||||
pisi = doc.documentElement
|
||||
source = getTags(pisi, "Source")[0]
|
||||
history = getTags(source, "History")[0]
|
||||
item = source.removeChild(history)
|
||||
addText(doc, pisi, "\n ")
|
||||
fixIndent(doc, item)
|
||||
fixTags(doc, item)
|
||||
pisi.appendChild(item)
|
||||
addText(doc, pisi, "\n")
|
||||
f = codecs.open(path,'w', "utf-8")
|
||||
f.write(doc.toxml())
|
||||
f.close()
|
||||
|
||||
pakages = find_pspecs(sys.argv[1])
|
||||
for pak in pakages:
|
||||
fixPspec(os.path.join(pak, "pspec.xml"))
|
||||
Reference in New Issue
Block a user