forked from DavideViolante/sprint-milestone-action
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfunctions.js
39 lines (36 loc) · 1 KB
/
functions.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
const moment = require('moment');
function getLastMilestone(milestones) {
if (!milestones.length) {
return {
lastNumber: 0,
lastDueOn: moment().format()
};
}
const sortedMilestones = milestones
.filter((v) => v != null ? v.title.match(/Sprint #\d+/) : false)
.sort((a, b) => {
const s1 = parseInt(a.title.substr(8));
const s2 = parseInt(b.title.substr(8));
if (s1 < s2) {
return -1;
}
else if (s1 > s2) {
return 1;
}
return 0;
}).reverse();
return {
lastNumber: sortedMilestones[0] != null ? parseInt(sortedMilestones[0].title.substring(8)) : 0,
lastDueOn: sortedMilestones[0] ? sortedMilestones[0].due_on : moment().format()
};
}
function calculateNextMilestone(lastNumber, lastDueOn, sprintDuration) {
return {
number: lastNumber + 1,
due_on: moment(lastDueOn).add(+sprintDuration, 'weeks').format()
}
}
module.exports = {
getLastMilestone,
calculateNextMilestone
};