def main(parser_class):
    # Step : Parse CLI args
    parser = ArgumentParser(prog=parser_class.__name__, description="This tool can parse files.",
                            version="1.0")
    input_args = parser.add_mutually_exclusive_group(required=True)
    input_args.add_argument("-i", "--in", help="Path to Input File.")
    input_args.add_argument("-li", "--list", help="Path to a text file which contains list of input file paths")
    parser.add_argument("-o", "--out", help="Path to output file.", required=True)
    parser.add_argument("-p", "--parser-url", help="URL of Tika Server.", required=False)
    args = vars(parser.parse_args())

    # Step : Initialize Tika
    parser = parser_class(args['parser_url'])
    # get stream/list of files
    if args['list']:
        files = read_lines(args['list'])
    else:
        files = [args['in']]
    # Step : Parse
    parsed = parser.parse_files(files)
    # Step store the objects to file
    dump_jsonlines(parsed, args['out'])