import argparse import os import json import datetime import jinja2 def is_valid_file(parser, arg): if not os.path.exists(arg): parser.error("%s does not exist." % arg) else: return arg def simpledate(date_string): try: d = datetime.datetime.strptime(date_string, '%Y-%M-%d') return d.strftime('%M/%Y') except ValueError: # in case this is not a date, we return it verbatim return date_string def create_template(args): env = jinja2.Environment(loader=jinja2.FileSystemLoader('.')) env.block_start_string = '((*' env.block_end_string = '*))' env.variable_start_string = '(((' env.variable_end_string = ')))' env.comment_start_string = '((=' env.comment_end_string = '=))' env.filters['simpledate'] = simpledate return env.get_template(args.template) def main(): parser = argparse.ArgumentParser() parser.add_argument('-t', '--template', type=lambda x: is_valid_file(parser, x), help="Jinja2 input template", required=True) parser.add_argument('-r', '--resume', type=lambda x: is_valid_file(parser, x), help="JSON resume", required=True) args = parser.parse_args() data = json.load(open(args.resume, 'r')) template = create_template(args) result = template.render(resume=data).encode('utf-8') print(result) if __name__ == '__main__': main()