56 lines
1.5 KiB
JavaScript
56 lines
1.5 KiB
JavaScript
|
const { addComment } = require('./add-comment');
|
||
|
const { rateLimiter } = require('../utils');
|
||
|
const { owner, repo, octokitConfig, octokitAuth } = require('../constants');
|
||
|
|
||
|
const octokit = require('@octokit/rest')(octokitConfig);
|
||
|
|
||
|
octokit.authenticate(octokitAuth);
|
||
|
|
||
|
/* closes and reopens an open PR with applicable comment */
|
||
|
const closeOpen = async number => {
|
||
|
await octokit.pullRequests
|
||
|
.update({
|
||
|
owner,
|
||
|
repo,
|
||
|
number,
|
||
|
state: 'closed',
|
||
|
base: 'master'
|
||
|
})
|
||
|
.then(async () => {
|
||
|
await rateLimiter(5000);
|
||
|
return octokit.pullRequests.update({
|
||
|
owner,
|
||
|
repo,
|
||
|
number,
|
||
|
state: 'open',
|
||
|
base: 'master'
|
||
|
});
|
||
|
})
|
||
|
.then(async () => {
|
||
|
await rateLimiter(1000);
|
||
|
const msg = 'Closed/Reopened to resolve a specific Travis build failure.';
|
||
|
await addComment(number, msg);
|
||
|
})
|
||
|
.catch(async err => {
|
||
|
// Octokit stores message as a stringified object
|
||
|
const { errorMg } = JSON.parse(err.message);
|
||
|
if (
|
||
|
errorMg ===
|
||
|
'state cannot be changed. The repository that submitted this pull request has been deleted.'
|
||
|
) {
|
||
|
await rateLimiter(1000);
|
||
|
await addComment(
|
||
|
number,
|
||
|
"This PR was closed because user's repo was deleted."
|
||
|
);
|
||
|
console.log(
|
||
|
`PR #${number} was closed because user's repo was deleted.`
|
||
|
);
|
||
|
} else {
|
||
|
throw err;
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
|
||
|
module.exports = { closeOpen };
|