@intuit/standardly
Version:
DIY framework for Standards Governance
46 lines (43 loc) • 1.56 kB
JavaScript
;
const FileExistenceTestlet = require("./FileExistenceTestlet");
const FileNonExistenceTestlet = require("./FileNonExistenceTestlet");
const PatternNonExistenceTestlet = require("./PatternNonExistenceTestlet");
const PatternExistenceTestlet = require("./PatternExistenceTestlet");
const Testlet = require("./Testlet.js");
const log = require("../lib/common.js").log;
/**
* Types of rules
*/
const RuleTypeEnum = {
FME: "FME",
FMNE: "FMNE",
FMCP: "FMCP",
FMNCP: "FMNCP",
SECRETKEYS: "SECRETKEYS"
};
/**
* Creates the testlet based on the ruleType
* @param {*} target
* @param {*} ruleType
* @param {*} ruleset
* @param {*} rulesfile
* @param {*} excludeDirs
*/
function createTestlet(target, ruleType, ruleset, rulesfile, excludeDirs) {
if (ruleType == RuleTypeEnum.FME) {
return new FileExistenceTestlet(target, ruleset, rulesfile, excludeDirs);
} else if (ruleType == RuleTypeEnum.FMNE) {
return new FileNonExistenceTestlet(target, ruleset, rulesfile, excludeDirs);
} else if (ruleType == RuleTypeEnum.FMNCP) {
return new PatternNonExistenceTestlet(target, ruleset, rulesfile, excludeDirs);
} else if (ruleType == RuleTypeEnum.FMCP) {
return new PatternExistenceTestlet(target, ruleset, rulesfile, excludeDirs);
} else {
log.warn("Unknown rule type " + ruleType + " will be ignored");
return new Testlet(target, null, ruleset, rulesfile, excludeDirs);
}
}
module.exports = {
createTestlet: createTestlet,
RuleTypeEnum: RuleTypeEnum
};