diff --git a/bin/modulelint b/bin/modulelint index 19219e3..26fbeff 100755 --- a/bin/modulelint +++ b/bin/modulelint @@ -3,14 +3,12 @@ /** * Module dependencies. */ - var program = require('commander'), fs = require('fs'), path = require('path'), lint = require('../'); // options - program .version(lint.version) .option('-i, --input ', 'Where is the project'); @@ -32,8 +30,21 @@ if (!program.input) { } else { // process stdin var input = path.resolve(program.input); - lint.sniffe(input, function (err, result) { + lint.sniffe(input, function (err, results) { console.log("项目路径:" + input); - console.log(result); + var total = results.reduce(function (memo, currect) { + return memo + currect.score; + }, 0); + console.log("总得分数为:" + total); + console.log("=============="); + results.forEach(function (result) { + console.log("检查项:" + result.name); + console.log("得分:" + result.score); + var info = result.info; + var reasons = (Array.isArray(info) && info.length) ? info: (info ? [info] : []); + reasons.forEach(function (reason, index) { + console.log((index + 1) + ". " + reason); + }); + }); }); } diff --git a/lib/items/folder.js b/lib/checklist/folder.js similarity index 100% rename from lib/items/folder.js rename to lib/checklist/folder.js diff --git a/lib/modulelint.js b/lib/modulelint.js index 95076fb..3071a6c 100644 --- a/lib/modulelint.js +++ b/lib/modulelint.js @@ -1,8 +1,46 @@ -var folder = require('./items/folder.js'); +var fs = require('fs'); +var path = require('path'); +var EventProxy = require('eventproxy'); + +exports.loadChecklist = function () { + var checklist = []; + // the acutal commands. read them dynamicaly + var files = fs.readdirSync(path.join(__dirname, 'checklist')); + + for(var i = 0, ii = files.length; i < ii; i++) { + if (path.extname(files[i]) === ".js") { + var name = path.basename(files[i], '.js'); + var checker = require(path.join(__dirname, 'checklist', files[i])); + checker.name = name; + checklist.push(checker); + } + } + return checklist; +}; /** * In me the tiger sniffe the rose */ exports.sniffe = function (source, callback) { - folder.check(source, callback); + var checklist = exports.loadChecklist(); + var proxy = new EventProxy(); + var length = checklist.length; + + proxy.after('checked', length, function (results) { + callback(null, results); + }); + proxy.on('error', function (err) { + proxy.unbind(); + callback(err); + }); + checklist.forEach(function (checker) { + checker.check(source, function (err, result) { + if (err) { + proxy.fire('error', err); + return; + } + result.name = checker.name; + proxy.fire('checked', result); + }); + }); };