zenhub-automations/lib/resolve-issue-number.js

33 lines
852 B
JavaScript
Raw Normal View History

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(str);
if (brMatch && brMatch[1]) {
issueNumbers.push(brMatch[1]);
return issueNumbers;
}
}
// plain mode
let match = descMatching.exec(str);
if (!match || !match[1]) {
return issueNumbers;
}
return [ ...issueNumbers, ...match[1].replace(/\s|#/g, '').split(',') ];
}, []);
};