From 007bba209310bc1c53e19e935f1af0326793823b Mon Sep 17 00:00:00 2001 From: Inga Lovinde <52715130+inga-lovinde@users.noreply.github.com> Date: Wed, 21 Dec 2016 18:05:51 +0300 Subject: [PATCH] Implemented eslintbrowser task --- BuildServer/lib/tasks/eslintbrowser.js | 31 ++++++++++++++++++ BuildServer/lib/tasks/eslintbrowserall.js | 38 +++++++++++++++++++++++ BuildServer/lib/tasks/packform.js | 6 ++++ BuildServer/package.json | 1 + BuildServer/settings-eslint-browser.json | 12 +++++++ 5 files changed, 88 insertions(+) create mode 100644 BuildServer/lib/tasks/eslintbrowser.js create mode 100644 BuildServer/lib/tasks/eslintbrowserall.js create mode 100644 BuildServer/settings-eslint-browser.json diff --git a/BuildServer/lib/tasks/eslintbrowser.js b/BuildServer/lib/tasks/eslintbrowser.js new file mode 100644 index 0000000..1998e62 --- /dev/null +++ b/BuildServer/lib/tasks/eslintbrowser.js @@ -0,0 +1,31 @@ +"use strict"; + +const fs = require('fs'); +const path = require('path'); +const CLIEngine = require("eslint").CLIEngine; +const settings = require("../../settings"); +const cli = new CLIEngine({ + configFile: settings.eslintBrowserConfig +}); + +module.exports = (params, processor) => ({ + process: () => { + const filePath = path.normalize(processor.context.exported + "/" + params.filename); + const result = cli.executeOnFiles([filePath]); + processor.onInfo("ESLinted " + params.filename); + + result.results.forEach((subresult) => { + subresult.messages.forEach((message) => { + const messageText = params.filename + ":" + message.line + "," + message.column + " (" + message.ruleId + ") " + message.message; + if (message.fatal || message.severity === 2) { + processor.onError(messageText); + } else { + processor.onWarn(messageText); + } + }); + }); + + processor.done(); + } +}); + diff --git a/BuildServer/lib/tasks/eslintbrowserall.js b/BuildServer/lib/tasks/eslintbrowserall.js new file mode 100644 index 0000000..15bffe1 --- /dev/null +++ b/BuildServer/lib/tasks/eslintbrowserall.js @@ -0,0 +1,38 @@ +"use strict"; + +const glob = require('glob'); + +module.exports = (params, processor) => ({ + process: () => { + if (processor.context.eslintbrowserallDone) { + processor.onWarn("eslintbrowserall task is executed more than once; this is probably a bug in your mbs.json"); + } + + processor.context.eslintbrowserallDone = true; + + const excludeFiles = params.excludeFiles || []; + + glob("**/*.js", { + dot: true, + cwd: processor.context.exported + }, (err, files) => { + if (err) { + processor.onError(err); + return processor.done(); + } + + return processor.processTask({ + type: params.preventParallelTests ? "sequential" : "parallel", + params: { + tasks: files.filter(file => !excludeFiles.includes(file)).map((file) => ({ + name: file, + type: "eslintbrowser", + params: { + filename: file + } + })) + } + }, processor.done.bind(processor)); + }); + } +}); diff --git a/BuildServer/lib/tasks/packform.js b/BuildServer/lib/tasks/packform.js index 88a9a47..8111581 100644 --- a/BuildServer/lib/tasks/packform.js +++ b/BuildServer/lib/tasks/packform.js @@ -4,6 +4,12 @@ const sequential = require('./sequential'); module.exports = (params, processor) => sequential({ tasks: [ + { + type: "eslintbrowserall", + params: { + excludeFiles: params.eslintExcludeFiles + } + }, { type: "uglifyjsall" }, diff --git a/BuildServer/package.json b/BuildServer/package.json index f801d5a..898bc19 100644 --- a/BuildServer/package.json +++ b/BuildServer/package.json @@ -11,6 +11,7 @@ "body-parser": "^1.15.2", "cssnano": "^3.9.1", "errorhandler": "^1.5.0", + "eslint": "^3.12.2", "express": "4.14.0", "fs-extra": "^1.0.0", "github": "~7.1.0", diff --git a/BuildServer/settings-eslint-browser.json b/BuildServer/settings-eslint-browser.json new file mode 100644 index 0000000..f819eec --- /dev/null +++ b/BuildServer/settings-eslint-browser.json @@ -0,0 +1,12 @@ +{ + "env": { + "browser": true + }, + "useEslintrc": false, + "extends": "eslint:all", + "rules": { + "quotes": ["warn", "double"], + "no-var": "off", + "require-jsdoc": "off" + } +} \ No newline at end of file