#!/usr/bin/env python2.7
import sys, re, argparse
from ucscGb.gbData.ra.raFile import RaFile


def addChange(changelist, obj, change):
    if obj not in changelist:
        changelist[obj] = list()
    changelist[obj].append(change)
    return changelist


def main():

    parser = argparse.ArgumentParser(
        description='Describes the differences between the two .ra files',
        epilog='example: raDiff alpha/wgEncodeUwTfbs.ra beta/wgEncodeUwTfbs.ra'
        )
    parser.add_argument('RaFileOne', help='The .ra file')
    parser.add_argument('RaFileTwo', help='The .ra file to compare to')
    parser.add_argument('-r', '--reverse', action="store_true", default=0, help="Reverses the comparison")

    #if len(sys.argv) == 1:
    #    parser.print_help()
    #    return

    args = parser.parse_args()
    ra1 = RaFile(args.RaFileOne)
    ra2 = RaFile(args.RaFileTwo)
    
    if args.reverse:
        ra3 = ra1
        ra1 = ra2
        ra2 = ra3

    changelist, newStanzas, droppedStanzas = ra2.changeSummary(ra1)

    print "Dropped Stanzas (%s):" % len(droppedStanzas)
    for i in sorted(droppedStanzas, key=str.lower):
        print i
    print ""
    print "New Stanzas (%s):" % len(newStanzas)
    for i in sorted(newStanzas, key=str.lower):
        print i
    print ""

    print "Changed Stanzas (%s):" % len(changelist.keys())
    for i in sorted(changelist, key=str.lower):
        print "%s:" % i
        for j in changelist[i]:
            print "\t%s" % j
        print ""

if __name__ == "__main__":
    main()
