diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100755 index 0000000..9b55442 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,38 @@ +module.exports = { + "env": { + "browser": true, + "es6": true, + "node": true + }, + "parserOptions": { + "ecmaVersion": 2017, + "sourceType": "module" + }, + "extends": "eslint:recommended", + "rules": { + "indent": [ + "error", + 4, { + "SwitchCase": 1 + } + ], + "linebreak-style": [ + "error", + "unix" + ], + "quotes": [ + "error", + "single" + ], + "semi": [ + "error", + "always" + ], + "no-console": [ + "error", + { + allow: ["warn", "error", "log"] + } + ] + } +}; diff --git a/index.html b/index.html old mode 100644 new mode 100755 diff --git a/less/fonts/chivo.less b/less/fonts/chivo.less old mode 100644 new mode 100755 diff --git a/package.json b/package.json index 454d5ab..98d9fd0 100755 --- a/package.json +++ b/package.json @@ -8,6 +8,16 @@ }, "author": "salomonelli", "homepage": "https://github.com/salomonelli/best-resume-ever", + "keywords": [ + "resume", + "template", + "mustache", + "less", + "cv", + "curriculum", + "vitae", + "electron" + ], "scripts": { "server": "node --harmony-async-await src/app.js", "less": "node --harmony-async-await src/less.js", @@ -15,7 +25,8 @@ "readme": "node --harmony-async-await src/RenderReadMe.js", "start": "npm run babel && npm run less && npm run server", "dev": "watch 'npm start' src/ resumes/ less/", - "pdf": "npm run babel && npm run less && node --harmony-async-await src/ResumeToPdf.js" + "pdf": "npm run babel && npm run less && node --harmony-async-await src/ResumeToPdf.js", + "lint": "eslint src/" }, "dependencies": { "@typopro/web-montserrat": "3.4.9", @@ -52,5 +63,9 @@ "typeface-chivo": "0.0.22", "watch": "1.0.1", "write": "0.3.2" + }, + "devDependencies": { + "eslint": "^3.15.0", + "pre-commit": "^1.2.2" } } diff --git a/pdf/resume-grey-boxes.pdf b/pdf/resume-grey-boxes.pdf old mode 100644 new mode 100755 diff --git a/pdf/resume-left-right.pdf b/pdf/resume-left-right.pdf old mode 100644 new mode 100755 diff --git a/pdf/resume-oblique.pdf b/pdf/resume-oblique.pdf old mode 100644 new mode 100755 diff --git a/pdf/resume-side-bar.pdf b/pdf/resume-side-bar.pdf old mode 100644 new mode 100755 diff --git a/pdf/resume-spotify.pdf b/pdf/resume-spotify.pdf old mode 100644 new mode 100755 diff --git a/pdf/resume-wanted.pdf b/pdf/resume-wanted.pdf old mode 100644 new mode 100755 diff --git a/public/javascript.js b/public/javascript.js old mode 100644 new mode 100755 diff --git a/public/style.min.css b/public/style.min.css old mode 100644 new mode 100755 diff --git a/src/Config.js b/src/Config.js old mode 100644 new mode 100755 diff --git a/src/RenderReadMe.js b/src/RenderReadMe.js index a77b529..8252c39 100755 --- a/src/RenderReadMe.js +++ b/src/RenderReadMe.js @@ -1,16 +1,14 @@ const showdown = require('showdown'); const converter = new showdown.Converter(); -const fs = require('fs'); const path = require('path'); const Mustache = require('mustache'); -const writeFile = require('write'); const Util = require('./Util'); /** * renders readme to html for github Pages - * @return {Promise} + * @return {Promise} */ -RenderReadMe = async function() { +const RenderReadMe = async function() { let dir = path.join(__dirname, '../' + 'README.md'); const readmeContent = await Util.readFileContent(dir); const readmeHTML = converter.makeHtml(readmeContent); @@ -20,7 +18,7 @@ RenderReadMe = async function() { content: readmeHTML }); await Util.writeFile('index.html', readme); -} +}; RenderReadMe(); diff --git a/src/ResumeToPdf.js b/src/ResumeToPdf.js index f98fe41..3e0cdb0 100755 --- a/src/ResumeToPdf.js +++ b/src/ResumeToPdf.js @@ -1,10 +1,8 @@ -const pdf = require('html-pdf'); const path = require('path'); const Config = require('./Config'); const Util = require('./Util'); const Server = require('./Server'); - const ResumeToPdf = { /** * generates electroshot command for screenshoting resume @@ -13,7 +11,7 @@ const ResumeToPdf = { */ electroshotScript: function(resume) { const dir = path.join(__dirname, '../pdf'); - return 'electroshot localhost:3000/' + resume + + return 'electroshot localhost:' + Config.port + '/' + resume + ' 2481x3508 --pdf-margin none --format pdf --out ' + dir + ' --filename "' + resume + '.pdf" --pdf-background; '; }, @@ -30,6 +28,6 @@ const ResumeToPdf = { await Util.execBash(script); await Server.kill(); } -} +}; ResumeToPdf.convert(); diff --git a/src/Server.js b/src/Server.js index 0e1631b..4686495 100755 --- a/src/Server.js +++ b/src/Server.js @@ -1,7 +1,5 @@ const path = require('path'); -const fs = require('fs'); const express = require('express'); -const mustacheExpress = require('mustache-express'); const request = require('request-promise'); const Config = require('./Config'); const Util = require('./Util'); @@ -31,7 +29,7 @@ const Server = { */ kill: function() { request.get('http://localhost:' + Config.port + '/kill') - .catch(error => {}); + .catch(error => console.log(error)); }, /** * sets route of express app @@ -78,6 +76,6 @@ const Server = { await Util.setTimeout(500); Server.start(); } -} +}; module.exports = Server; diff --git a/src/StyleCompiler.js b/src/StyleCompiler.js index 12e284f..6d2509f 100755 --- a/src/StyleCompiler.js +++ b/src/StyleCompiler.js @@ -1,8 +1,6 @@ const less = require('less'); const path = require('path'); -const fs = require('fs'); const CleanCSS = require('clean-css'); -const writeFile = require('write'); const Util = require('./Util'); const StyleCompiler = { @@ -31,13 +29,13 @@ const StyleCompiler = { return new Promise((res, rej) => { new CleanCSS().minify(css, (err, output) => { if (err) rej(err); - else res(output) + else res(output); }); }); }, /** * compiles less files to minified css file - * @return {Promise} + * @return {Promise} */ run: async function() { const directories = Util.getResumesFromDirectories(); @@ -60,6 +58,6 @@ const StyleCompiler = { const p = path.join(__dirname, '../public/style.min.css'); await Util.writeFile(p, minCSS.styles); } -} +}; module.exports = StyleCompiler; diff --git a/src/Util.js b/src/Util.js old mode 100644 new mode 100755 index 142113e..e92e88a --- a/src/Util.js +++ b/src/Util.js @@ -1,19 +1,17 @@ const path = require('path'); -const request = require('request-promise'); const writeFile = require('write'); const fs = require('fs'); -const Config = require('./Util'); var exec = require('child_process').exec; const Util = { /** * gets directories starting with 'resume-' - * @return {[]} + * @return {[]} */ getDirectories: function() { const srcpath = path.join(__dirname, '../resumes'); return fs.readdirSync(srcpath) - .filter(file => file.includes('resume-')) + .filter(file => file.includes('resume-')); }, /** * gets resumes names and paths from directories @@ -27,7 +25,7 @@ const Util = { resumes.push({ path: dir, name: name.replace('-', ' ') - }) + }); }); return resumes; }, @@ -75,12 +73,12 @@ const Util = { execBash: function(script) { return new Promise((res, rej) => { exec(script, - (error, stdout, stderr) => { - if (error) rej(err); + error => { + if (error) rej(error); else res(); }); }); } -} +}; module.exports = Util; diff --git a/src/app.js b/src/app.js old mode 100644 new mode 100755 diff --git a/src/less.js b/src/less.js old mode 100644 new mode 100755 diff --git a/src/person.js b/src/person.js index 56da777..363f617 100755 --- a/src/person.js +++ b/src/person.js @@ -1,3 +1,4 @@ +/* eslint-disable */ module.exports = { name: { first: 'John', diff --git a/src/public/javascript.js b/src/public/javascript.js index 25ce429..45df53f 100755 --- a/src/public/javascript.js +++ b/src/public/javascript.js @@ -1,7 +1,3 @@ -// minimum margin of content to bottom of page -const marginBottom = 50; -// DOM-element of -let page; // all dom elements let elements; @@ -11,16 +7,7 @@ let elements; */ const getAllDOMElements = () => { elements = document.getElementsByTagName('*'); -} - -/** - * gets DOM-element of #resumeX - * @return {HTMLElement} - */ -const getResumeDOMElement = () => { - return page.children[0]; -} - +}; /** * checks if DOM-element has box-shadow @@ -33,7 +20,7 @@ const hasBoxShadow = element => { .getPropertyValue('box-shadow'); if (style != 'none') return style; else return ''; -} +}; /** * gets absolute position of element @@ -44,8 +31,8 @@ const getAbsolutePositionOfElement = element => { return { top: element.getBoundingClientRect().top, left: element.getBoundingClientRect().left - } -} + }; +}; /** @@ -54,7 +41,7 @@ const getAbsolutePositionOfElement = element => { */ const removeBoxShadowOfElement = element => { element.style.boxShadow = 'none'; -} +}; /** @@ -66,7 +53,7 @@ const getBorderRadiusOfElement = element => { return window .getComputedStyle(element, null) .getPropertyValue('border-radius'); -} +}; /** * adds new box shadow @@ -86,7 +73,7 @@ const addNewBoxShadow = (element, position, boxShadow) => { div.style.top = position.top; div.style.left = position.left; document.getElementsByTagName('body')[0].appendChild(div); -} +}; /** * fixes box shadow of element @@ -97,7 +84,7 @@ const fixBoxShadow = (element, boxShadow) => { const position = getAbsolutePositionOfElement(element); removeBoxShadowOfElement(element); addNewBoxShadow(element, position, boxShadow); -} +}; /** * gets all elements with shadows @@ -115,7 +102,7 @@ const getElementsWithShadows = () => { }); } return ret; -} +}; /** * fixes shadows, since normal box-shadow cannot be printed in chrome, @@ -126,7 +113,7 @@ const fixBoxShadows = () => { for (let i = 0; i < elementsWithShadow.length; i++) { fixBoxShadow(elementsWithShadow[i].element, elementsWithShadow[i].shadow); } -} +}; /** * checks if the page contains a resume @@ -135,7 +122,7 @@ const fixBoxShadows = () => { const isResume = () => { if (document.getElementsByTagName('page')[0]) return true; else return false; -} +}; /** * fixes resume @@ -144,6 +131,6 @@ const fixResume = () => { if (!isResume()) return; getAllDOMElements(); fixBoxShadows(); -} +}; fixResume();