@commitlint/prompt
Version:
commitizen prompt using commitlint.config.js
86 lines • 2.31 kB
JavaScript
import { RuleConfigSeverity } from "@commitlint/types";
/**
* Get name for a given rule id
* @param id of the rule
* @return name of the rule
*/
export function getRuleName(id) {
const fragments = id.split("-");
return fragments.length > 1 ? fragments.slice(1).join("-") : fragments[0];
}
/**
* Get prefix for a given rule id
* @param id of the rule
* @return prefix of the rule
*/
export function getRulePrefix(id) {
const fragments = id.split("-");
return fragments.length > 1 ? fragments[0] : null;
}
/**
* Get a predicate matching rule definitions with a given name
*/
export function getHasName(name) {
return (rule) => getRuleName(rule[0]) === name;
}
/**
* Check if a rule definition is active
* @param rule to check
* @return if the rule definition is active
*/
export function ruleIsActive(rule) {
const [, value] = rule;
if (value && Array.isArray(value)) {
return value[0] > RuleConfigSeverity.Disabled;
}
return false;
}
/**
* Check if a rule definition is applicable
* @param rule to check
* @return if the rule definition is applicable
*/
export function ruleIsApplicable(rule) {
const [, value] = rule;
if (value && Array.isArray(value)) {
return value[1] === "always";
}
return false;
}
/**
* Check if a rule definition is applicable
* @param rule to check
* @return if the rule definition is applicable
*/
export function ruleIsNotApplicable(rule) {
const [, value] = rule;
if (value && Array.isArray(value)) {
return value[1] === "never";
}
return false;
}
export function enumRuleIsActive(rule) {
return (ruleIsActive(rule) &&
ruleIsApplicable(rule) &&
Array.isArray(rule[1][2]) &&
rule[1][2].length > 0);
}
/**
* Get rules for a given prefix
* @param prefix to search in rule names
* @param rules rules to search in
* @return rules matching the prefix search
*/
export function getRules(prefix, rules) {
return Object.entries(rules).filter((rule) => getRulePrefix(rule[0]) === prefix);
}
export function getMaxLength(rule) {
if (rule &&
ruleIsActive(rule) &&
ruleIsApplicable(rule) &&
typeof rule[1][2] === "number") {
return rule[1][2];
}
return Infinity;
}
//# sourceMappingURL=utils.js.map