lesslint
Version:
lint your less code
144 lines (117 loc) • 11.6 kB
JavaScript
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)
*/
;
/**
* 显示默认的信息
*/
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=
;