lint-filter
Version:
Lint touched code stricter
139 lines (106 loc) • 4.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.setupEslint = exports.getEslintRcFilename = exports.readdir = undefined;
var getEslintRcFilename = exports.getEslintRcFilename = function () {
var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '.';
var files;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return exports.readdir(path);
case 2:
files = _context.sent;
return _context.abrupt('return', files.reduce(function (last, item) {
if (/^\.eslintrc/.test(item)) {
return item;
}
return last;
}));
case 4:
case 'end':
return _context.stop();
}
}
}, _callee, this);
}));
return function getEslintRcFilename() {
return _ref.apply(this, arguments);
};
}();
var setupEslint = exports.setupEslint = function () {
var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
var result, rules, config;
return regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
result = void 0;
_context2.prev = 1;
_context2.next = 4;
return (0, _spawn2.default)('eslint', ['.', '-f', 'checkstyle']);
case 4:
result = _context2.sent;
_context2.next = 10;
break;
case 7:
_context2.prev = 7;
_context2.t0 = _context2['catch'](1);
result = _context2.t0.stdout;
case 10:
_context2.t1 = _checkstyle.getRulesFromCheckstyle;
_context2.next = 13;
return (0, _parser.parseString)(result);
case 13:
_context2.t2 = _context2.sent;
rules = (0, _context2.t1)(_context2.t2);
_context2.next = 17;
return getEslintRcFilename();
case 17:
_context2.t3 = _context2.sent;
_context2.t4 = _lodash2.default.reduce(rules, function (last, rule) {
return _lodash2.default.assign({}, last, _defineProperty({}, rule, 0));
}, {});
config = {
extends: _context2.t3,
rules: _context2.t4
};
console.log(JSON.stringify(config, null, 2)); // eslint-disable-line no-console
case 21:
case 'end':
return _context2.stop();
}
}
}, _callee2, this, [[1, 7]]);
}));
return function setupEslint() {
return _ref2.apply(this, arguments);
};
}();
exports.default = setup;
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _bluebird = require('bluebird');
var _bluebird2 = _interopRequireDefault(_bluebird);
var _spawn = require('./utils/spawn');
var _spawn2 = _interopRequireDefault(_spawn);
var _checkstyle = require('./utils/checkstyle');
var _parser = require('./parser');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new _bluebird2.default(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return _bluebird2.default.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
var readdir = exports.readdir = _bluebird2.default.promisify(_fs2.default.readdir);
function setup(options) {
switch (options.linter) {
case 'eslint':
return exports.setupEslint(options);
default:
throw new Error('Unknown linter');
}
}