#!/hive/groups/encode/dcc/bin/python
import sys, os, re, argparse, subprocess, math
from ucscgenomics import mkChangeNotes


def main():


    parser = argparse.ArgumentParser(
        prog='mkChangeNotes',
        formatter_class=argparse.RawDescriptionHelpFormatter,
        description='Writes out notes file for packing to QA',
        epilog=
    """Examples:

    mkChangeNotes hg19 wgEncodeUwDnase 3 2 --loose
    mkChangeNotes hg19 wgEncodeSydhTfbs 1 - --full
    mkChangeNotes hg19 wgEncodeCshlLongRnaSeq 1 -
    mkChangeNotes encodeTest wgEncodeTest 2 1 --mdb wgEncodeTest2

    """
        )
    parser.add_argument('-l', '--loose', action="store_true", default=0, help='Loose checking for legacy elements. Will be retired once all tracks go through a release cycle')
    parser.add_argument('-i', '--ignore', action="store_true", default=0, help='Ignore errors, output.append(out report.')
    parser.add_argument('-s', '--summary', action="store_true", default=0, help='output.append(summary stats only.')
    parser.add_argument('-m', '--mdb', default=0, help='use a different mdb table')
    parser.add_argument('database', help='The database, typically hg19 or mm9')
    parser.add_argument('composite', help='The composite name, wgEncodeCshlLongRnaSeq for instance')
    parser.add_argument('releaseNew', help='The new release to be released')
    parser.add_argument('releaseOld', nargs='?', default='-', help='The old release that is already released, if on release 1, or solo release mode, put anything here')

    if len(sys.argv) == 1:
        parser.print_help()
        return
    args = parser.parse_args(sys.argv[1:])
    if not args.releaseNew.isdigit():
        parser.print_help()
        return



    if not args.releaseOld.isdigit():
        args.releaseOld = 'solo'    
    elif int(args.releaseOld) > int(args.releaseNew):
        errors.append("Old Release is higher than New Release")
        args.releaseOld = args.releaseNew
        printErrors(errors)
        return
    specialMdb = None
    if args.mdb:
        specialMdb = args.mdb
    argsdict = {'database': args.database, 'composite': args.composite, 'releaseNew': args.releaseNew, 'releaseOld': args.releaseOld, 'loose': args.loose, 'ignore': args.ignore, 'summary': args.summary, 'specialMdb': specialMdb}

    notes = mkChangeNotes.makeNotes(argsdict)

    for line in notes.output:
        print line

if __name__ == '__main__':
    main()

