UNPKG

@qualweb/cli

Version:
66 lines 3.23 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.addActRuleOptionsToCommand = addActRuleOptionsToCommand; const node_fs_1 = __importDefault(require("node:fs")); const commander_1 = require("commander"); const rules_json_1 = __importDefault(require("@qualweb/act-rules/lib/rules.json")); const types_1 = require("../types"); function actRulesListParseHelper(value, previousValue) { if (!previousValue) previousValue = { error: [], ok: [] }; const allActRules = Object.values(rules_json_1.default); if (/^QW-ACT-R\d+$/i.exec(value)) { value = value.toUpperCase(); const foundActRule = allActRules.find(rule => rule.code === value); if (foundActRule) { previousValue.ok.push(foundActRule.code); } else { previousValue.error.push(value); } } else if (value.length === 6) { value = value.toLowerCase(); const foundActRule = allActRules.find(rule => rule.mapping === value); if (foundActRule) { previousValue.ok.push(foundActRule.code); } else { previousValue.error.push(value); } } 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) => actRulesListParseHelper(current, prev), previousValue); } else { previousValue.error.push(value); } return previousValue; } function addActRuleOptionsToCommand(command) { const actRuleIncludeOption = new commander_1.Option('--act-rules <rules...>', 'ACT rules to include. Can be multiple. If a path to a FILE, it will be read as a newline-separated list of rules.') .argParser(actRulesListParseHelper) .implies({ module: [types_1.ModuleOptionsEnum.ACTRules] }); const actRuleExcludeOption = new commander_1.Option('--exclude-act <rules...>', 'ACT rules to exclude. Can be multiple. If a path to a FILE, it will be read as a newline-separated list of rules.') .argParser(actRulesListParseHelper) .implies({ module: [types_1.ModuleOptionsEnum.ACTRules] }); const actRuleLevelOption = new commander_1.Option('--act-levels <levels...>', 'ACT level to test') .choices(Object.values(types_1.ConformanceLevelEnum)) .implies({ module: [types_1.ModuleOptionsEnum.ACTRules] }); const actRulePrincipleOption = new commander_1.Option('--act-principles <principles...>', 'Which principles to test for in ACT rules. Only ACT rules matching the principle will be tested.') .choices(Object.values(types_1.PrincipleEnum)) .implies({ module: [types_1.ModuleOptionsEnum.ACTRules] }); command.addOption(actRuleIncludeOption); command.addOption(actRuleExcludeOption); command.addOption(actRuleLevelOption); command.addOption(actRulePrincipleOption); return command; } //# sourceMappingURL=actRules.js.map