-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathmilestones.js
More file actions
50 lines (44 loc) · 2 KB
/
milestones.js
File metadata and controls
50 lines (44 loc) · 2 KB
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
40
41
42
43
44
45
46
47
48
49
50
const getCurrentMilestone = async (context, token, owner, repo) => {
return await getMilestoneByName(context, token, owner, repo, 'Next release')
}
const getMilestoneByName = async (context, token, owner, repo, name) => {
const githubApiRequest = require('./github-api-request')
const milestones = await githubApiRequest(context, token, 'GET', `/repos/${owner}/${repo}/milestones?state=open`)
if (milestones.length === 2) {
const filtered = milestones.filter(m => m.title !== name)
if (filtered.length === 1) milestones.splice(0, 2, filtered)
}
if (milestones.length !== 1) throw new Error(`Expected one milestone, got ${milestones.length}`)
return milestones[0]
}
const closeMilestone = async (context, token, owner, repo, milestoneNumber, dueOn) => {
const githubApiRequest = require('./github-api-request')
const payload = {
state: 'closed'
}
if (dueOn) payload.due_on = dueOn
await githubApiRequest(context, token, 'PATCH', `/repos/${owner}/${repo}/milestones/${milestoneNumber}`, payload)
}
const renameMilestone = async (context, token, owner, repo, milestoneNumber, newName) => {
const githubApiRequest = require('./github-api-request')
const payload = {
title: newName
}
await githubApiRequest(context, token, 'PATCH', `/repos/${owner}/${repo}/milestones/${milestoneNumber}`, payload)
}
const openNextReleaseMilestone = async (context, token, owner, repo) => {
const githubApiRequest = require('./github-api-request')
const milestones = await githubApiRequest(context, token, 'GET', `/repos/${owner}/${repo}/milestones?state=open`)
const filtered = milestones.filter(m => m.title === 'Next release')
if (filtered.length === 1) return filtered[0]
return await githubApiRequest(context, token, 'POST', `/repos/${owner}/${repo}/milestones`, {
title: 'Next release'
})
}
module.exports = {
getCurrentMilestone,
getMilestoneByName,
closeMilestone,
renameMilestone,
openNextReleaseMilestone
}