def main(): parser = argparse.ArgumentParser(description="Generate a family of Eagle Devices") parser.add_argument("--db", required=True, type=str, nargs=1, dest='db', help="Spec for device list to build") parser.add_argument("--lbrin", required=True, type=str, nargs=1, dest='lbrin', help="Library containing the symbol and the package.") parser.add_argument("--lbrout", required=True, type=str, nargs=1, dest='lbrout', help="Output Library.") args = parser.parse_args() db = ET.parse(args.db[0]) v = gcomVisitor() v.visit(db.getroot()) lbrIn = EagleLibrary(args.lbrin[0]) # ET.dump(db.getroot()) for j in v.getVariants(): #ET.dump(j) devset = lbrIn.findDeviceSet(j.find("devset").text.upper()) # ET.dump(devset) # sys.exit(0) assert(devset is not None) for a in j.findall("attr"): j.set(a.get("key"), a.get("value")) device = ET.SubElement(devset.find("devices"), "device", name=(j.find("format").text % j.attrib).upper(), package=j.find("package").text.upper()) connects = ET.SubElement(device, "connects"); connections = eval(j.find("pinmapping").text) for c in connections: ET.SubElement(connects, "connect", gate="G$1", pin=c, pad=connections[c]) t = ET.SubElement(device,"technologies") tech =ET.SubElement(t,"technology",name="") for a in j.attrib: ET.SubElement(tech, "attribute", name=a.upper(), value=j.attrib[a])