This function sets up a command-line option parser and then calls print_matching_trees
    to do all of the real work.

def main(argv):
    """This function sets up a command-line option parser and then calls print_matching_trees
    to do all of the real work.
    """
    import argparse
    description = 'Uses Open Tree of Life web services to try to find a tree with the value property pair specified. ' \
                  'setting --fuzzy will allow fuzzy matching'
    parser = argparse.ArgumentParser(prog='ot-get-tree', description=description)
    parser.add_argument('arg_dict', type=json.loads, help='name(s) for which we will try to find OTT IDs')
    parser.add_argument('--property', default=None, type=str, required=False)
    parser.add_argument('--fuzzy', action='store_true', default=False,
                        required=False)  # exact matching and verbose not working atm...
    parser.add_argument('--verbose', action='store_true', default=False, required=False)
    try:
        args = parser.parse_args(argv)
        arg_dict = args.arg_dict
        exact = not args.fuzzy
        verbose = args.verbose
    except:
        arg_dict = {'ot:studyId': 'ot_308'}
        sys.stderr.write('Running a demonstration query with {}\n'.format(arg_dict))
        exact = True
        verbose = False
    print_matching_studies(arg_dict, exact=exact, verbose=verbose)