version4.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. # usage:
  2. # copper1fzp.py -d [fzp folder]
  3. # add or update a <version> element.
  4. import getopt, sys, os, os.path, re, xml.dom.minidom, xml.dom
  5. def usage():
  6. print """
  7. usage:
  8. version.py -d [fzp folder]
  9. add or update a <version> element.
  10. """
  11. def main():
  12. try:
  13. opts, args = getopt.getopt(sys.argv[1:], "hd:", ["help", "directory"])
  14. except getopt.GetoptError, err:
  15. # print help information and exit:
  16. print str(err) # will print something like "option -a not recognized"
  17. usage()
  18. sys.exit(2)
  19. dir = None
  20. for o, a in opts:
  21. #print o
  22. #print a
  23. if o in ("-d", "--directory"):
  24. dir = a
  25. elif o in ("-h", "--help"):
  26. usage()
  27. sys.exit(2)
  28. else:
  29. assert False, "unhandled option"
  30. if(not(dir)):
  31. usage()
  32. sys.exit(2)
  33. for root, dirs, files in os.walk(dir, topdown=False):
  34. for filename in files:
  35. if not filename.endswith(".fzp"):
  36. continue
  37. fzpFilename = os.path.join(root, filename)
  38. try:
  39. dom = xml.dom.minidom.parse(fzpFilename)
  40. except xml.parsers.expat.ExpatError, err:
  41. print str(err), fzpFilename
  42. continue
  43. fzp = dom.documentElement
  44. versionNodes = fzp.getElementsByTagName("version")
  45. version = None
  46. if (versionNodes.length == 0):
  47. version = dom.createElement("version")
  48. fzp.insertBefore(version, fzp.firstChild)
  49. elif (versionNodes.length == 1):
  50. txt = ""
  51. version = versionNodes.item(0)
  52. else:
  53. print "multiple version elements in", fzpFilename
  54. continue
  55. while version.hasChildNodes():
  56. oldChild = version.firstChild
  57. version.removeChild(oldChild)
  58. oldChild.unlink()
  59. vtext = dom.createTextNode("4")
  60. version.appendChild(vtext)
  61. print "adding version 4 to", fzpFilename
  62. outfile = open(fzpFilename, 'wb')
  63. s = dom.toxml("UTF-8")
  64. outfile.write(s)
  65. outfile.flush()
  66. outfile.close()
  67. if __name__ == "__main__":
  68. main()