@commitlint/cz-commitlint
Version:
Commitizen adapter using the commitlint.config.js
55 lines • 2.39 kB
JavaScript
import { getPromptMessages, getPromptQuestions } from '../store/prompts.js';
import { getRule } from '../store/rules.js';
import getCaseFn from '../utils/case-fn.js';
import getFullStopFn from '../utils/full-stop-fn.js';
import { enumRuleIsActive, getEnumList, getMaxLength, getMinLength, ruleIsActive, ruleIsApplicable, ruleIsDisabled, } from '../utils/rules.js';
export default function (rulePrefix) {
const questions = getPromptQuestions();
const questionSettings = questions[rulePrefix];
const emptyRule = getRule(rulePrefix, 'empty');
const mustBeEmpty = emptyRule && ruleIsActive(emptyRule) && ruleIsApplicable(emptyRule);
if (mustBeEmpty) {
return null;
}
const canBeSkip = !emptyRule || ruleIsDisabled(emptyRule);
const enumRule = getRule(rulePrefix, 'enum');
const enumRuleList = enumRule && enumRuleIsActive(enumRule) ? getEnumList(enumRule) : null;
let enumList;
if (enumRuleList) {
const enumDescriptions = questionSettings?.['enum'];
if (enumDescriptions) {
const enumNames = Object.keys(enumDescriptions);
const longest = Math.max(...enumRuleList.map((enumName) => enumName.length));
// TODO emoji + title
enumList = enumRuleList
.sort((a, b) => enumNames.indexOf(a) - enumNames.indexOf(b))
.map((enumName) => {
const enumDescription = enumDescriptions[enumName]?.description;
if (enumDescription) {
return {
name: `${enumName}:`.padEnd(longest + 4) + enumDescription,
value: enumName,
short: enumName,
};
}
else {
return enumName;
}
});
}
else {
enumList = [...enumRuleList];
}
}
return {
skip: canBeSkip,
enumList,
title: questionSettings?.['description'] ?? `${rulePrefix}:`,
caseFn: getCaseFn(getRule(rulePrefix, 'case')),
fullStopFn: getFullStopFn(getRule(rulePrefix, 'full-stop')),
minLength: getMinLength(getRule(rulePrefix, 'min-length')),
maxLength: getMaxLength(getRule(rulePrefix, 'max-length')),
messages: getPromptMessages(),
};
}
//# sourceMappingURL=getRuleQuestionConfig.js.map