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'])