replacedby.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. # usage:
  2. # replacedby.py -d <directory>
  3. #
  4. # <directory> is a folder containing .fzp files. add a <property name="replaced by">some name</property>
  5. import getopt, sys, os, re
  6. def usage():
  7. print """
  8. usage:
  9. replacedby.py -d [directory]
  10. directory is a folder containing .fzp files.
  11. add a <property name="replaced by">some name</property>
  12. """
  13. def main():
  14. try:
  15. opts, args = getopt.getopt(sys.argv[1:], "hd:", ["help", "directory"])
  16. except getopt.GetoptError, err:
  17. # print help information and exit:
  18. print str(err) # will print something like "option -a not recognized"
  19. usage()
  20. sys.exit(2)
  21. outputDir = None
  22. for o, a in opts:
  23. #print o
  24. #print a
  25. if o in ("-d", "--directory"):
  26. outputDir = a
  27. elif o in ("-h", "--help"):
  28. usage()
  29. sys.exit(2)
  30. else:
  31. assert False, "unhandled option"
  32. if(not(outputDir)):
  33. usage()
  34. sys.exit(2)
  35. for filename in os.listdir(outputDir):
  36. if (filename.endswith(".fzp")):
  37. infile = open(os.path.join(outputDir, filename), "r")
  38. fzp = infile.read();
  39. infile.close();
  40. match = re.search('<version.+replacedby.*>(.+)</version>', fzp)
  41. if (match == None):
  42. newprop = ""
  43. if filename.startswith("resistor"):
  44. newprop = 'ResistorModuleID'
  45. elif filename.startswith("generic-female-header_"):
  46. fmatch = re.search('generic-female-header_(\d+)\.', filename)
  47. newprop = 'generic_female_pin_header_' + fmatch.group(1) + '_100mil'
  48. elif filename.startswith("generic-female-header-rounded_"):
  49. fmatch = re.search('generic-female-header-rounded_(\d+)\.', filename)
  50. newprop = 'generic_rounded_female_pin_header_' + fmatch.group(1) + '_100mil'
  51. elif filename.startswith("generic-male-header_"):
  52. fmatch = re.search('generic-male-header_(\d+)\.', filename)
  53. newprop = 'generic_male_pin_header_' + fmatch.group(1) + '_100mil'
  54. elif filename.startswith("mystery_part"):
  55. fmatch = re.search('mystery_part(\d+)\.', filename)
  56. newprop = 'mystery_part_' + fmatch.group(1)
  57. elif filename.startswith("pcb-plain"):
  58. newprop = 'RectanglePCBModuleID'
  59. if (newprop):
  60. newfzp = fzp.replace("<version", "<version " + "replacedby=\"" + newprop + "\" ", 1);
  61. print "{0}:{1}".format(filename, newprop)
  62. outfile = open(os.path.join(outputDir, filename), "w")
  63. outfile.write(newfzp);
  64. outfile.close()
  65. if __name__ == "__main__":
  66. main()