Last active
July 21, 2022 10:58
-
-
Save janv/c2836143653d065575b34781c5b88369 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function cleanupGithub() { | |
const githubThreads = GmailApp.getUserLabelByName('Github Notifications').getThreads(); | |
githubThreads.forEach(thread => { | |
const messages = thread.getMessages(); | |
let threadDone = false; | |
const threadOld = isOld(thread.getLastMessageDate()) | |
for (let message of messages) { | |
if (isDeploymentMessage(message)) { | |
console.log(`Deployment message (trashing message) ${message.getSubject()} (${message.getThread().getPermalink()})`) | |
message.moveToTrash(); | |
} else if (isAssignmentMessage(message)) { | |
console.log(`Assignment message (trashing message) ${message.getSubject()} (${message.getThread().getPermalink()})`) | |
message.moveToTrash(); | |
} else if (isRunFailedMessage(message)) { | |
console.log(`Run failed message (trashing thread ) ${message.getSubject()} (${message.getThread().getPermalink()})`) | |
thread.moveToTrash(); | |
break; | |
} else if (isMergeConfirmation(message)) { | |
console.log(`Merge confirmation (thread DONE) ${message.getSubject()} (${message.getThread().getPermalink()})`) | |
threadDone = true; | |
} else { | |
console.log(`Nothing to do for message ${message.getSubject()} (${message.getThread().getPermalink()})`) | |
} | |
} | |
if (threadDone && threadOld) { | |
console.log(`Delete Thread ${thread.getFirstMessageSubject()} (${thread.getPermalink()}) because done and old`) | |
thread.moveToTrash() | |
} | |
}) | |
/** | |
* @param {GmailApp.GmailMessage} message | |
*/ | |
function isDeploymentMessage(message) { | |
const body = message.getPlainBody() | |
return message.getFrom().match(/\[bot\]/) && body.match(/Deployments|Open deployed CreativeEditor SDK Guides/) | |
} | |
/** | |
* @param {GmailApp.GmailMessage} message | |
*/ | |
function isAssignmentMessage(message) { | |
const body = message.getPlainBody() | |
return message.getFrom().match(/\[bot\]/) && body.match(/Assigned/) | |
} | |
/** | |
* @param {GmailApp.GmailMessage} message | |
*/ | |
function isRunFailedMessage(message) { | |
return message.getSubject().match(/\] (PR r|R)un (failed|cancelled)/) | |
} | |
/** | |
* @param {GmailApp.GmailMessage} message | |
*/ | |
function isMergeConfirmation(message) { | |
return message.getPlainBody().match(/Merged #\d+ into \D+./) | |
} | |
/** | |
* @param {Date} date | |
*/ | |
function isOld(date) { | |
const now = new Date().valueOf() | |
const then = date.valueOf(); | |
const twoDays = 2 * 24 * 60 * 60 * 1000 | |
return (now - then) > twoDays; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment