UNPKG

ko

Version:
78 lines (77 loc) 2.75 kB
"use strict"; 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;