33 lines
848 B
JavaScript
33 lines
848 B
JavaScript
const { CLOSING_VERBS } = process.env;
|
|
|
|
const closingVerbs = CLOSING_VERBS ?
|
|
// converts CLOSING_VERBS=test,abc to [ 'test', 'abc' ]
|
|
CLOSING_VERBS.split(',') :
|
|
// default
|
|
[ 'closes', 'fixes', 'fixed', 'resolves', 'resolved', 'gotem' ];
|
|
|
|
const descMatching = new RegExp(`(?:${closingVerbs.join('|')}) +([\\d, #]+)`, 'i');
|
|
|
|
module.exports = function extractIssueNumbers (...str) {
|
|
return str.reduce((issueNumbers, s) => {
|
|
// branch mode
|
|
if (s.indexOf(' ') < 0) {
|
|
let brMatch = /#(\d+)/.exec(s);
|
|
|
|
if (brMatch && brMatch[1]) {
|
|
issueNumbers.push(brMatch[1]);
|
|
return issueNumbers;
|
|
}
|
|
}
|
|
|
|
// plain mode
|
|
let match = descMatching.exec(s);
|
|
|
|
if (!match || !match[1]) {
|
|
return issueNumbers;
|
|
}
|
|
|
|
return [ ...issueNumbers, ...match[1].replace(/\s|#/g, '').split(',') ];
|
|
}, []);
|
|
};
|