UNPKG

@qualweb/cli

Version:
55 lines 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 }); exports.addBestPracticeOptionsToCommand = addBestPracticeOptionsToCommand; const node_fs_1 = __importDefault(require("node:fs")); const commander_1 = require("commander"); const bestPractices_json_1 = __importDefault(require("@qualweb/best-practices/lib/bestPractices.json")); const types_1 = require("../types"); function bestPracticesListParseHelper(value, previousValue) { if (!previousValue) previousValue = { error: [], ok: [] }; const allBestPractices = Object.values(bestPractices_json_1.default); if (/^QW-BP\d+$/i.exec(value)) { value = value.toUpperCase(); const foundBestPractice = allBestPractices.find(rule => rule.code === value); if (foundBestPractice) { previousValue.ok.push(foundBestPractice.code); } else { previousValue.error.push(value); } } else { value = value.toUpperCase(); const foundTechnique = allBestPractices.find(rule => 'mapping' in rule && rule.mapping === value); if (foundTechnique) { previousValue.ok.push(foundTechnique.code); } else if (node_fs_1.default.existsSync(value)) { const fileContents = node_fs_1.default.readFileSync(value, 'utf8') .split(/\r?\n/) .map(line => line.trim()) .filter(line => line.length > 0); return fileContents.reduce((prev, current) => bestPracticesListParseHelper(current, prev), previousValue); } else { previousValue.error.push(value); } } return previousValue; } function addBestPracticeOptionsToCommand(command) { const bestPracticeIncludeOption = new commander_1.Option('--best-practices <practices...>', 'Which tests for best practices to execute. Can be multiple. If a path to a FILE, it will be read as a newline-separated list of practices.') .argParser(bestPracticesListParseHelper) .implies({ module: [types_1.ModuleOptionsEnum.BestPractices] }); const bestPracticeExcludeOption = new commander_1.Option('--exclude-bp <practices...>', 'Which tests for best practices to exclude. Can be multiple. If a path to a FILE, it will be read as a newline-separated list of practices.') .argParser(bestPracticesListParseHelper) .implies({ module: [types_1.ModuleOptionsEnum.BestPractices] }); command.addOption(bestPracticeIncludeOption); command.addOption(bestPracticeExcludeOption); return command; } //# sourceMappingURL=bestPractices.js.map