@mediamonks/commitlint-issue-reference
Version:
Ensures your commit messages always include the same issue key as in your branch name
35 lines (34 loc) • 1.16 kB
JavaScript
export function getIssuePattern(prefixOrRegex) {
if (typeof prefixOrRegex === 'string') {
const sanitizedPrefix = prefixOrRegex.replaceAll('#', '');
return {
commitPattern: new RegExp(`${prefixOrRegex}\\d+`, 'gu').source,
branchPattern: new RegExp(`${sanitizedPrefix}\\d+`, 'gu').source,
issuePrefix: extractIssuePrefix(prefixOrRegex, sanitizedPrefix),
};
}
if (prefixOrRegex) {
const branchPattern = prefixOrRegex.branch ?? prefixOrRegex.commit;
return {
commitPattern: prefixOrRegex.commit,
branchPattern,
issuePrefix: extractIssuePrefix(prefixOrRegex.commit, branchPattern),
};
}
// return default
const commitPattern = /[A-Z\d]+-\d+/gu.source;
return {
commitPattern,
branchPattern: commitPattern,
issuePrefix: '',
};
}
function extractIssuePrefix(commitPrefix, branchPrefix) {
if (commitPrefix === branchPrefix) {
return '';
}
if (commitPrefix.includes(branchPrefix)) {
return commitPrefix.replace(branchPrefix, '');
}
return undefined;
}