-
Notifications
You must be signed in to change notification settings - Fork 0
/
render.js
31 lines (27 loc) · 1.04 KB
/
render.js
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
import { generateDocument } from './word-resume/src/render';
import moment from 'moment';
import { Packer } from 'docx';
import { promises as fsp } from 'fs';
const { RESUME_SRC = './resume/resume.yml' } = process.env;
Promise.resolve().then(async () => {
const fs = require('fs');
const { promisify } = require('util');
const yaml = require('js-yaml');
const [, , inputFile] = process.argv;
const styles = await fsp.readFile('./styles.xml', 'utf-8');
const s = yaml.load(await fsp.readFile(inputFile || RESUME_SRC));
const doc = generateDocument(s, styles);
const packer = new Packer();
const buffer = await packer.toBuffer(doc);
const { author } = s.header;
const outputFilename = `./output/${author}-${moment().format('DDMMMYYYY')}.docx`;
await fsp
.writeFile(outputFilename, buffer)
.catch(async e => {
console.warn(e.message);
const renamed = `${outputFilename}.copy`;
await fsp.writeFile(renamed);
return renamed;
})
.then(renamed => console.log('Rendered', renamed || outputFilename));
});