# usage:
#    genmoduleidfzphash.py -d [directory of fzp files] -o [output file name]
#   loads the each fzp file, extracts the moduleID, and saves the id-filename pair to the output file

import getopt
import sys
import os
import os.path
import re
import xml.dom.minidom
import xml.dom


def usage():
    print """
usage:
    genmoduleidfzphash.py -d [directory of fzp files] -o [output file name]
    loads the each fzp file, extracts the moduleID, and saves the id-filename pair to the output file
"""


def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], "hd:o:", [
                                   "help", "directory", "output"])
    except getopt.GetoptError, err:
        # print help information and exit:
        print str(err)  # will print something like "option -a not recognized"
        usage()
        sys.exit(2)
    inputDir = None
    output = None

    for o, a in opts:
        # print o
        # print a
        if o in ("-d", "--directory"):
            inputDir = a
        elif o in ("-o", "--output"):
            output = a
        elif o in ("-h", "--help"):
            usage()
            sys.exit(2)
        else:
            assert False, "unhandled option"

    if(not(inputDir)):
        usage()
        sys.exit(2)

    if(not(output)):
        usage()
        sys.exit(2)

    outfile = open(output, 'wb')
    for fname in os.listdir(inputDir):
        if not fname.endswith(".fzp"):
            continue

        dom = xml.dom.minidom.parse(os.path.join(inputDir, fname))
        root = dom.documentElement
        id = root.getAttribute("moduleId")
        if (id):
            outfile.write(id)
            outfile.write(",")
            outfile.write(fname.replace(".fzp", ""))
            outfile.write("\n")

    outfile.flush()
    outfile.close()


if __name__ == "__main__":
    main()
