-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcv_parser
More file actions
executable file
·76 lines (57 loc) · 1.98 KB
/
cv_parser
File metadata and controls
executable file
·76 lines (57 loc) · 1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/usr/bin/env python3
# -*- mode: python -*-
import argparse
import logging
import pathlib
import shutil
import sys
import yaml
from renderers.pdf import render as pdf_render
from renderers.web import render as web_render
EXAMPLES_FOLDER = pathlib.Path(__file__).parent.joinpath('example').absolute()
def create_arg_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(
description='Create CV files from a yaml file')
parser.add_argument('filename',
type=str,
help=''.join([
'Name of the yaml source, you can use ',
'"generate" to create an example'
]))
parser.add_argument('--render-type',
dest='render_type',
choices=['web', 'pdf', 'all'],
type=str,
default='all',
help='Type of output (web, pdf, all)')
return parser
def generate_example_file():
print('Creating a "my_cv.yml" file...')
shutil.copy(f'{EXAMPLES_FOLDER}/my_cv.yml', '.')
shutil.copy(f'{EXAMPLES_FOLDER}/me.jpg', '.')
def cv_parse_file(filename: str, render_type: str):
try:
with open(filename) as f:
cv_stucture = yaml.load(f, Loader=yaml.Loader)
if render_type in ['web', 'all']:
web_render(cv_stucture)
if render_type in ['pdf', 'all']:
pdf_render(cv_stucture)
except FileNotFoundError:
logging.error('The filename %s does not exist', filename)
sys.exit(-1)
def main():
parser = create_arg_parser()
args = parser.parse_args()
filename = args.filename
render_type = args.render_type
if filename == 'generate':
generate_example_file()
sys.exit()
try:
cv_parse_file(filename, render_type)
except TypeError as e:
print(e)
sys.exit(-1)
if __name__ == '__main__':
main()