ko
Version:
build & lint library
78 lines (77 loc) • 2.75 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const factory_1 = require("./factory");
const ko_lints_1 = __importDefault(require("ko-lints"));
const utils_1 = require("../utils");
class LintFactory extends factory_1.ActionFactory {
constructor(service, name) {
super(service);
this.name = name;
this.generateConfig();
}
generateConfig() {
const opts = this.service.config?.lints?.[this.name];
return opts || {};
}
registerCommand() {
const name = this.name;
this.service.commander.registerCommand({
name,
description: `lint your codes via ${name}`,
args: [
{
flags: '<patterns...>',
description: ` Specify ${name} lint patterns(via glob)`,
},
],
options: [
{
flags: '-w, --write',
description: 'try to fix problems automatically',
},
{
flags: '-c, --configPath <configPath>',
description: `Specify ${name} config path`,
},
{
flags: '--concurrency',
description: 'Enable concurrency mode',
},
{
flags: '--concurrentNumber <number>',
description: 'Specify max worker count',
},
],
});
this.service.commander.bindAction(name, this.action.bind(this));
}
async action(patterns, cliOpts) {
const config = this.generateConfig();
const finalOpts = Object.freeze({
name: this.name,
...config,
...cliOpts,
patterns: Array.isArray(patterns) ? patterns : [patterns],
});
const { name, ...opts } = finalOpts;
(0, utils_1.assert)(opts.patterns, `patterns config of ${name} should be specified(via glob)`);
process.title = finalOpts.name;
const lintRunner = new ko_lints_1.default(opts);
const result = (await lintRunner.run(name)).filter(Boolean);
if (result.length === 0) {
this.successStdout('[success]', `lint via ${name}`);
process.exit(0);
}
else {
this.warningStdout(`lint via ${name} failed:`);
result.forEach(str => {
str && this.warningStdout('[failed]', str);
});
process.exit(1);
}
}
}
exports.default = LintFactory;