UNPKG

lesslint

Version:
144 lines (117 loc) 11.6 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.parse = parse; var _fs = require('fs'); var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk); var _edpCore = require('edp-core'); var _package = require('../package'); var _package2 = _interopRequireDefault(_package); var _util = require('./util'); var _checker = require('./checker'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * @file 命令行功能模块 * @author ielgnaw(wuji0223@gmail.com) */ 'use strict'; /** * 显示默认的信息 */ var showDefaultInfo = function showDefaultInfo() { console.warn(_package2.default); console.log(''); console.log(_package2.default.name + ' v' + _package2.default.version); console.log(_chalk2.default.bold.green((0, _util.formatMsg)(_package2.default.description))); }; /** * 校验结果报告 * * @inner * @param {Object} errors 按文件类型为 key,值为对应的校验错误信息列表的对象 */ var report = function report(errors) { var t12 = true; if (errors.length) { errors.forEach(function (error) { _edpCore.log.info(error.path); error.messages.sort(function (left, right) { return left.line - right.line; }); error.messages.forEach(function (message) { var ruleName = message.ruleName || ''; var msg = '→ ' + (ruleName ? _chalk2.default.bold(ruleName) + ': ' : ''); // 全局性的错误可能没有位置信息 if (typeof message.line === 'number') { msg += 'line ' + message.line; if (typeof message.col === 'number') { msg += ', col ' + message.col; } msg += ': '; } msg += message.colorMessage || message.message; _edpCore.log.warn(msg); }); }); t12 = false; } if (t12) { _edpCore.log.info('Congratulations! Everything gone well, you are T12!'); } else { process.exit(1); } }; /** * 解析参数。作为命令行执行的入口 * * @param {Array} args 参数列表 */ function parse(args) { args = args.slice(2); // 不带参数时,默认检测当前目录下所有的 less 文件 if (args.length === 0) { args.push('.'); } if (args[0] === '--version' || args[0] === '-v') { showDefaultInfo(); return; } var patterns = ['**/*.less', '!**/{output,test,node_modules,asset,dist,release,doc,dep,report}/**']; var candidates = (0, _util.getCandidates)(args, patterns); var count = candidates.length; if (!count) { return; } // 错误信息的集合 var errors = []; /** * 每个文件的校验结果回调,主要用于统计校验完成情况 * * @inner */ var callback = function callback() { count--; if (!count) { report(errors); } }; // 遍历每个需要检测的 less 文件 candidates.forEach(function (candidate) { var readable = (0, _fs.createReadStream)(candidate, { encoding: 'utf8' }); readable.on('data', function (chunk) { var file = { content: chunk, path: candidate }; (0, _checker.check)(file, errors, callback); }); readable.on('error', function (err) { throw err; }); }); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGkuanMiXSwibmFtZXMiOlsicGFyc2UiLCJzaG93RGVmYXVsdEluZm8iLCJjb25zb2xlIiwid2FybiIsInN5cyIsImxvZyIsIm5hbWUiLCJ2ZXJzaW9uIiwiY2hhbGsiLCJib2xkIiwiZ3JlZW4iLCJkZXNjcmlwdGlvbiIsInJlcG9ydCIsInQxMiIsImVycm9ycyIsImxlbmd0aCIsImZvckVhY2giLCJpbmZvIiwiZXJyb3IiLCJwYXRoIiwibWVzc2FnZXMiLCJzb3J0IiwibGVmdCIsInJpZ2h0IiwibGluZSIsInJ1bGVOYW1lIiwibWVzc2FnZSIsIm1zZyIsImNvbCIsImNvbG9yTWVzc2FnZSIsInByb2Nlc3MiLCJleGl0IiwiYXJncyIsInNsaWNlIiwicHVzaCIsInBhdHRlcm5zIiwiY2FuZGlkYXRlcyIsImNvdW50IiwiY2FsbGJhY2siLCJyZWFkYWJsZSIsImNhbmRpZGF0ZSIsImVuY29kaW5nIiwib24iLCJmaWxlIiwiY29udGVudCIsImNodW5rIiwiZXJyIl0sIm1hcHBpbmdzIjoiOzs7OztRQXlFZ0JBLEssR0FBQUEsSzs7QUFwRWhCOztBQUNBOzs7O0FBQ0E7O0FBQ0E7Ozs7QUFDQTs7QUFDQTs7OztBQVZBOzs7OztBQVlBOztBQUVBOzs7QUFHQSxJQUFNQyxrQkFBa0IsU0FBbEJBLGVBQWtCLEdBQU07QUFDMUJDLFlBQVFDLElBQVIsQ0FBYUMsaUJBQWI7QUFDQUYsWUFBUUcsR0FBUixDQUFZLEVBQVo7QUFDQUgsWUFBUUcsR0FBUixDQUFhRCxrQkFBSUUsSUFBSixHQUFXLElBQVgsR0FBa0JGLGtCQUFJRyxPQUFuQztBQUNBTCxZQUFRRyxHQUFSLENBQVlHLGdCQUFNQyxJQUFOLENBQVdDLEtBQVgsQ0FBaUIscUJBQVVOLGtCQUFJTyxXQUFkLENBQWpCLENBQVo7QUFDSCxDQUxEOztBQVFBOzs7Ozs7QUFNQSxJQUFNQyxTQUFTLFNBQVRBLE1BQVMsU0FBVTtBQUNyQixRQUFJQyxNQUFNLElBQVY7O0FBRUEsUUFBSUMsT0FBT0MsTUFBWCxFQUFtQjtBQUNmRCxlQUFPRSxPQUFQLENBQWUsaUJBQVM7QUFDcEJYLHlCQUFJWSxJQUFKLENBQVNDLE1BQU1DLElBQWY7QUFDQUQsa0JBQU1FLFFBQU4sQ0FBZUMsSUFBZixDQUFvQixVQUFDQyxJQUFELEVBQU9DLEtBQVAsRUFBaUI7QUFDakMsdUJBQU9ELEtBQUtFLElBQUwsR0FBWUQsTUFBTUMsSUFBekI7QUFDSCxhQUZEO0FBR0FOLGtCQUFNRSxRQUFOLENBQWVKLE9BQWYsQ0FBdUIsbUJBQVc7QUFDOUIsb0JBQU1TLFdBQVdDLFFBQVFELFFBQVIsSUFBb0IsRUFBckM7QUFDQSxvQkFBSUUsTUFBTSxRQUFRRixXQUFXakIsZ0JBQU1DLElBQU4sQ0FBV2dCLFFBQVgsSUFBdUIsSUFBbEMsR0FBeUMsRUFBakQsQ0FBVjtBQUNBO0FBQ0Esb0JBQUksT0FBT0MsUUFBUUYsSUFBZixLQUF3QixRQUE1QixFQUFzQztBQUNsQ0csMkJBQVEsVUFBVUQsUUFBUUYsSUFBMUI7QUFDQSx3QkFBSSxPQUFPRSxRQUFRRSxHQUFmLEtBQXVCLFFBQTNCLEVBQXFDO0FBQ2pDRCwrQkFBUSxXQUFXRCxRQUFRRSxHQUEzQjtBQUNIO0FBQ0RELDJCQUFPLElBQVA7QUFDSDs7QUFFREEsdUJBQU9ELFFBQVFHLFlBQVIsSUFBd0JILFFBQVFBLE9BQXZDO0FBQ0FyQiw2QkFBSUYsSUFBSixDQUFTd0IsR0FBVDtBQUNILGFBZEQ7QUFlSCxTQXBCRDtBQXFCQWQsY0FBTSxLQUFOO0FBQ0g7O0FBRUQsUUFBSUEsR0FBSixFQUFTO0FBQ0xSLHFCQUFJWSxJQUFKLENBQVMscURBQVQ7QUFDSCxLQUZELE1BR0s7QUFDRGEsZ0JBQVFDLElBQVIsQ0FBYSxDQUFiO0FBQ0g7QUFDSixDQWxDRDs7QUFxQ0E7Ozs7O0FBS08sU0FBUy9CLEtBQVQsQ0FBZWdDLElBQWYsRUFBcUI7QUFDeEJBLFdBQU9BLEtBQUtDLEtBQUwsQ0FBVyxDQUFYLENBQVA7O0FBRUE7QUFDQSxRQUFJRCxLQUFLakIsTUFBTCxLQUFnQixDQUFwQixFQUF1QjtBQUNuQmlCLGFBQUtFLElBQUwsQ0FBVSxHQUFWO0FBQ0g7O0FBRUQsUUFBSUYsS0FBSyxDQUFMLE1BQVksV0FBWixJQUEyQkEsS0FBSyxDQUFMLE1BQVksSUFBM0MsRUFBaUQ7QUFDN0MvQjtBQUNBO0FBQ0g7O0FBRUQsUUFBTWtDLFdBQVcsQ0FDYixXQURhLEVBRWIscUVBRmEsQ0FBakI7O0FBS0EsUUFBTUMsYUFBYSx5QkFBY0osSUFBZCxFQUFvQkcsUUFBcEIsQ0FBbkI7O0FBRUEsUUFBSUUsUUFBUUQsV0FBV3JCLE1BQXZCOztBQUVBLFFBQUksQ0FBQ3NCLEtBQUwsRUFBWTtBQUNSO0FBQ0g7O0FBRUQ7QUFDQSxRQUFNdkIsU0FBUyxFQUFmOztBQUVBOzs7OztBQUtBLFFBQU13QixXQUFXLFNBQVhBLFFBQVcsR0FBTTtBQUNuQkQ7QUFDQSxZQUFJLENBQUNBLEtBQUwsRUFBWTtBQUNSekIsbUJBQU9FLE1BQVA7QUFDSDtBQUNKLEtBTEQ7O0FBT0E7QUFDQXNCLGVBQVdwQixPQUFYLENBQW1CLHFCQUFhO0FBQzVCLFlBQU11QixXQUFXLDBCQUFpQkMsU0FBakIsRUFBNEI7QUFDekNDLHNCQUFVO0FBRCtCLFNBQTVCLENBQWpCO0FBR0FGLGlCQUFTRyxFQUFULENBQVksTUFBWixFQUFvQixpQkFBUztBQUN6QixnQkFBTUMsT0FBTztBQUNUQyx5QkFBU0MsS0FEQTtBQUVUMUIsc0JBQU1xQjtBQUZHLGFBQWI7QUFJQSxnQ0FBTUcsSUFBTixFQUFZN0IsTUFBWixFQUFvQndCLFFBQXBCO0FBQ0gsU0FORDtBQU9BQyxpQkFBU0csRUFBVCxDQUFZLE9BQVosRUFBcUIsZUFBTztBQUN4QixrQkFBTUksR0FBTjtBQUNILFNBRkQ7QUFHSCxLQWREO0FBZUgiLCJmaWxlIjoiY2xpLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZSDlkb3ku6TooYzlip/og73mqKHlnZdcbiAqIEBhdXRob3IgaWVsZ25hdyh3dWppMDIyM0BnbWFpbC5jb20pXG4gKi9cblxuaW1wb3J0IHtjcmVhdGVSZWFkU3RyZWFtfSBmcm9tICdmcyc7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHtsb2d9IGZyb20gJ2VkcC1jb3JlJztcbmltcG9ydCBzeXMgZnJvbSAnLi4vcGFja2FnZSc7XG5pbXBvcnQge2Zvcm1hdE1zZywgZ2V0Q2FuZGlkYXRlc30gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7Y2hlY2t9IGZyb20gJy4vY2hlY2tlcic7XG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiDmmL7npLrpu5jorqTnmoTkv6Hmga9cbiAqL1xuY29uc3Qgc2hvd0RlZmF1bHRJbmZvID0gKCkgPT4ge1xuICAgIGNvbnNvbGUud2FybihzeXMpO1xuICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICBjb25zb2xlLmxvZygoc3lzLm5hbWUgKyAnIHYnICsgc3lzLnZlcnNpb24pKTtcbiAgICBjb25zb2xlLmxvZyhjaGFsay5ib2xkLmdyZWVuKGZvcm1hdE1zZyhzeXMuZGVzY3JpcHRpb24pKSk7XG59O1xuXG5cbi8qKlxuICog5qCh6aqM57uT5p6c5oql5ZGKXG4gKlxuICogQGlubmVyXG4gKiBAcGFyYW0ge09iamVjdH0gZXJyb3JzIOaMieaWh+S7tuexu+Wei+S4uiBrZXnvvIzlgLzkuLrlr7nlupTnmoTmoKHpqozplJnor6/kv6Hmga/liJfooajnmoTlr7nosaFcbiAqL1xuY29uc3QgcmVwb3J0ID0gZXJyb3JzID0+IHtcbiAgICBsZXQgdDEyID0gdHJ1ZTtcblxuICAgIGlmIChlcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgIGVycm9ycy5mb3JFYWNoKGVycm9yID0+IHtcbiAgICAgICAgICAgIGxvZy5pbmZvKGVycm9yLnBhdGgpO1xuICAgICAgICAgICAgZXJyb3IubWVzc2FnZXMuc29ydCgobGVmdCwgcmlnaHQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGVmdC5saW5lIC0gcmlnaHQubGluZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZXJyb3IubWVzc2FnZXMuZm9yRWFjaChtZXNzYWdlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBydWxlTmFtZSA9IG1lc3NhZ2UucnVsZU5hbWUgfHwgJyc7XG4gICAgICAgICAgICAgICAgbGV0IG1zZyA9ICfihpIgJyArIChydWxlTmFtZSA/IGNoYWxrLmJvbGQocnVsZU5hbWUpICsgJzogJyA6ICcnKTtcbiAgICAgICAgICAgICAgICAvLyDlhajlsYDmgKfnmoTplJnor6/lj6/og73msqHmnInkvY3nva7kv6Hmga9cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG1lc3NhZ2UubGluZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgbXNnICs9ICgnbGluZSAnICsgbWVzc2FnZS5saW5lKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlLmNvbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1zZyArPSAoJywgY29sICcgKyBtZXNzYWdlLmNvbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbXNnICs9ICc6ICc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbXNnICs9IG1lc3NhZ2UuY29sb3JNZXNzYWdlIHx8IG1lc3NhZ2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICBsb2cud2Fybihtc2cpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0MTIgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodDEyKSB7XG4gICAgICAgIGxvZy5pbmZvKCdDb25ncmF0dWxhdGlvbnMhIEV2ZXJ5dGhpbmcgZ29uZSB3ZWxsLCB5b3UgYXJlIFQxMiEnKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG59O1xuXG5cbi8qKlxuICog6Kej5p6Q5Y+C5pWw44CC5L2c5Li65ZG95Luk6KGM5omn6KGM55qE5YWl5Y+jXG4gKlxuICogQHBhcmFtIHtBcnJheX0gYXJncyDlj4LmlbDliJfooahcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKGFyZ3MpIHtcbiAgICBhcmdzID0gYXJncy5zbGljZSgyKTtcblxuICAgIC8vIOS4jeW4puWPguaVsOaXtu+8jOm7mOiupOajgOa1i+W9k+WJjeebruW9leS4i+aJgOacieeahCBsZXNzIOaWh+S7tlxuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBhcmdzLnB1c2goJy4nKTtcbiAgICB9XG5cbiAgICBpZiAoYXJnc1swXSA9PT0gJy0tdmVyc2lvbicgfHwgYXJnc1swXSA9PT0gJy12Jykge1xuICAgICAgICBzaG93RGVmYXVsdEluZm8oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhdHRlcm5zID0gW1xuICAgICAgICAnKiovKi5sZXNzJyxcbiAgICAgICAgJyEqKi97b3V0cHV0LHRlc3Qsbm9kZV9tb2R1bGVzLGFzc2V0LGRpc3QscmVsZWFzZSxkb2MsZGVwLHJlcG9ydH0vKionXG4gICAgXTtcblxuICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBnZXRDYW5kaWRhdGVzKGFyZ3MsIHBhdHRlcm5zKTtcblxuICAgIGxldCBjb3VudCA9IGNhbmRpZGF0ZXMubGVuZ3RoO1xuXG4gICAgaWYgKCFjb3VudCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8g6ZSZ6K+v5L+h5oGv55qE6ZuG5ZCIXG4gICAgY29uc3QgZXJyb3JzID0gW107XG5cbiAgICAvKipcbiAgICAgKiDmr4/kuKrmlofku7bnmoTmoKHpqoznu5Pmnpzlm57osIPvvIzkuLvopoHnlKjkuo7nu5/orqHmoKHpqozlrozmiJDmg4XlhrVcbiAgICAgKlxuICAgICAqIEBpbm5lclxuICAgICAqL1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgICBjb3VudC0tO1xuICAgICAgICBpZiAoIWNvdW50KSB7XG4gICAgICAgICAgICByZXBvcnQoZXJyb3JzKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvLyDpgY3ljobmr4/kuKrpnIDopoHmo4DmtYvnmoQgbGVzcyDmlofku7ZcbiAgICBjYW5kaWRhdGVzLmZvckVhY2goY2FuZGlkYXRlID0+IHtcbiAgICAgICAgY29uc3QgcmVhZGFibGUgPSBjcmVhdGVSZWFkU3RyZWFtKGNhbmRpZGF0ZSwge1xuICAgICAgICAgICAgZW5jb2Rpbmc6ICd1dGY4J1xuICAgICAgICB9KTtcbiAgICAgICAgcmVhZGFibGUub24oJ2RhdGEnLCBjaHVuayA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlID0ge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGNodW5rLFxuICAgICAgICAgICAgICAgIHBhdGg6IGNhbmRpZGF0ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNoZWNrKGZpbGUsIGVycm9ycywgY2FsbGJhY2spO1xuICAgICAgICB9KTtcbiAgICAgICAgcmVhZGFibGUub24oJ2Vycm9yJywgZXJyID0+IHtcbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG4iXX0=