#!/usr/bin/python
# -*- coding: utf-8 -*-

def main(args):
    from sys import exit
    try:
        import json
        doc1 = json.load(args.FILE1)
        doc2 = json.load(args.FILE2)
        from hs3.diff import make_patch,diff_patch,sort_lists_by_key
        if args.sort_names:
            doc1 = sort_lists_by_key(doc1,"name")
            doc2 = sort_lists_by_key(doc2,"name")
        patch = make_patch(doc1, doc2, args.ignore, args.precision)
        for line in diff_patch(args,patch):
            print(line)
    except KeyboardInterrupt:
        exit(1)

if __name__ == "__main__":
    import argparse    
    parser = argparse.ArgumentParser(description='Diff two JSON files')
    parser.add_argument('FILE1', type=argparse.FileType('r'))
    parser.add_argument('FILE2', type=argparse.FileType('r'))
    parser.add_argument('--indent', type=int, default=None,
                        help='Indent output by n spaces')
    parser.add_argument("--ignore",nargs="+",help="ignore the following top level sections",default=["misc"])
    parser.add_argument("--sort-names",action="store_true",help="sort all lists of objects by their names")
    parser.add_argument("--ignore-name-components",nargs="+",help="ignore differences in names if they are only different by these substrings",default=[])
    parser.add_argument("--precision",type=int,help="number of decimal places to compare",default=6)

    args = parser.parse_args()

    main(args)
