resume/node/Util.js
2017-05-20 13:27:17 +02:00

84 lines
2.0 KiB
JavaScript

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;