convert.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import argparse
  2. import os
  3. import json
  4. import datetime
  5. import jinja2
  6. def is_valid_file(parser, arg):
  7. if not os.path.exists(arg):
  8. parser.error("%s does not exist." % arg)
  9. else:
  10. return arg
  11. def simpledate(date_string):
  12. try:
  13. d = datetime.datetime.strptime(date_string, '%Y-%M-%d')
  14. return d.strftime('%M/%Y')
  15. except ValueError:
  16. # in case this is not a date, we return it verbatim
  17. return date_string
  18. def create_template(args):
  19. env = jinja2.Environment(loader=jinja2.FileSystemLoader('.'))
  20. env.block_start_string = '((*'
  21. env.block_end_string = '*))'
  22. env.variable_start_string = '((('
  23. env.variable_end_string = ')))'
  24. env.comment_start_string = '((='
  25. env.comment_end_string = '=))'
  26. env.filters['simpledate'] = simpledate
  27. return env.get_template(args.template)
  28. def main():
  29. parser = argparse.ArgumentParser()
  30. parser.add_argument('-t', '--template',
  31. type=lambda x: is_valid_file(parser, x),
  32. help="Jinja2 input template", required=True)
  33. parser.add_argument('-r', '--resume',
  34. type=lambda x: is_valid_file(parser, x),
  35. help="JSON resume", required=True)
  36. parser.add_argument('-s', '--signature',
  37. type=lambda x: is_valid_file(parser, x),
  38. help="Signature image file", required=False)
  39. args = parser.parse_args()
  40. data = json.load(open(args.resume, 'r'))
  41. data['basics']['signature'] = args.signature
  42. template = create_template(args)
  43. result = template.render(resume=data).encode('utf-8')
  44. print(result)
  45. if __name__ == '__main__':
  46. main()