REFACTOR to pdf

This commit is contained in:
salomonelli 2017-05-20 13:38:05 +02:00
parent deec9ec589
commit 7520d2b7de
5 changed files with 76 additions and 129 deletions

View File

@ -1,29 +0,0 @@
const path = require('path');
const Util = require('./Util');
const ResumeToPdf = {
/**
* generates electroshot command for screenshoting resume
* @param {string} resume resume name in URL
* @return {string} electroshot command
*/
electroshotScript: resume => {
const dir = path.join(__dirname, '../pdf');
console.dir(dir);
return 'electroshot localhost:8080/#/' + resume +
' 2481x3508 --pdf-margin none --format pdf --out ' + dir +
' --filename "' + resume + '.pdf" --pdf-background; ';
},
/**
* converts resumes to pdf
* @return {Promise}
*/
convert: async() => {
const directories = Util.getResumesFromDirectories();
let script = '';
directories.forEach(resume => (script += ResumeToPdf.electroshotScript(resume.path)));
script = script.substring(0, script.length - 2);
await Util.execBash(script);
}
};
module.exports = ResumeToPdf;

View File

@ -1,15 +0,0 @@
const request = require('request-promise');
const PORT = 8080;
const Server = {
/**
* kills express app
*/
kill: () => {
request.get('http://localhost:' + PORT + '/kill')
.catch(error => {
if (error) return false;
});
}
};
module.exports = Server;

View File

@ -1,83 +0,0 @@
const path = require('path');
const writeFile = require('write');
const fs = require('fs');
const exec = require('child_process').exec;
const Util = {
/**
* gets directories starting with 'resume-'
* @return {[]}
*/
getDirectories: () => {
const srcpath = path.join(__dirname, '../src/components');
return fs.readdirSync(srcpath)
.filter(file => file.includes('resume-'));
},
/**
* gets resumes names and paths from directories
* @return {Object[]} array with resumes object {path: '', name: ''}
*/
getResumesFromDirectories: () => {
const directories = Util.getDirectories();
return directories
.filter(dir => dir.includes('resume-') && dir !== 'resume-XX')
.map(dir => {
let name = dir.replace('resume-', '');
return {
path: dir.replace('.vue', ''),
name: name.replace('-', ' ')
};
});
},
/**
* setTimeout as Promise
* @param {number} time time in ms
* @return {Promise}
*/
setTimeout: time => {
return new Promise(resolve => setTimeout(resolve, time));
},
/**
* reads file of content
* @param {string} dir directory
* @return {Promise}
*/
readFileContent: dir => {
return new Promise((resolve, reject) => {
fs.readFile(dir, 'utf8', (err, template) => {
if (err) reject(err);
else resolve(template);
});
});
},
/**
* writes content to given file
* @param {string} dir directory
* @param {string} content content of file
* @return {Promise}
*/
writeFile: async (dir, content) => {
return new Promise((resolve, reject) => {
writeFile(dir, content, (err) => {
if (err) reject(err);
resolve();
});
});
},
/**
* executes command
* @param {string} script e.g. 'echo "Hello World"'
* @return {Promise}
*/
execBash: script => {
return new Promise((resolve, reject) => {
exec(script,
error => {
if (error) reject(error);
else resolve();
});
});
}
};
module.exports = Util;

View File

@ -1,2 +1,76 @@
const ResumeToPdf = require('./ResumeToPdf');
ResumeToPdf.convert();
const fs = require('fs');
const path = require('path');
const exec = require('child_process').exec;
/**
* converts resumes to pdf
* @return {Promise}
*/
const convert = async() => {
try {
const directories = getResumesFromDirectories();
let script = '';
directories.forEach(resume => (script += electroshotScript(resume.path)));
script = script.substring(0, script.length - 2);
await execBash(script);
console.log('Successfully generated pdfs. Check in "/pdf".');
} catch (err) {
throw new Error(err);
}
};
/**
* generates electroshot command for screenshoting resume
* @param {string} resume resume name in URL
* @return {string} electroshot command
*/
const electroshotScript = resume => {
const dir = path.join(__dirname, '../pdf');
return 'electroshot localhost:8080/#/' + resume +
' 2481x3508 --pdf-margin none --format pdf --out ' + dir +
' --filename "' + resume + '.pdf" --pdf-background; ';
};
/**
* gets resumes names and paths from directories
* @return {Object[]} array with resumes object {path: '', name: ''}
*/
const getResumesFromDirectories = () => {
const directories = getDirectories();
return directories
.filter(dir => dir.includes('resume-') && dir !== 'resume-XX')
.map(dir => {
let name = dir.replace('resume-', '');
return {
path: dir.replace('.vue', ''),
name: name.replace('-', ' ')
};
});
};
/**
* gets directories starting with 'resume-'
* @return {[]}
*/
const getDirectories = () => {
const srcpath = path.join(__dirname, '../src/components');
return fs.readdirSync(srcpath)
.filter(file => file.includes('resume-'));
};
/**
* executes command
* @param {string} script e.g. 'echo "Hello World"'
* @return {Promise}
*/
const execBash = script => {
return new Promise((resolve, reject) => {
exec(script,
error => {
if (error) reject(error);
else resolve();
});
});
};
convert();

Binary file not shown.