status-github-bot/index.js

55 lines
1.9 KiB
JavaScript
Raw Normal View History

2018-02-06 12:47:21 +00:00
const MemCache = require('mem-cache')
const slackGitHubCache = new MemCache({ timeoutDisabled: true })
2018-02-06 12:47:21 +00:00
const SlackGitHubCacheBuilder = require('./lib/retrieve-slack-github-users')
const Slack = require('./lib/slack')
module.exports = async (robot) => {
2018-01-22 13:48:57 +00:00
console.log('Yay, the app was loaded!')
Slack(robot, slack => {})
await new Promise((resolve, reject) => {
robot.on('slack.connected', event => {
robot.log.info(`Connected to Slack`)
// Copy Slack RTM and Slack Web clients to the robot object
robot['slack'] = event.payload.slack
robot['slackWeb'] = event.payload.slackWeb
resolve()
})
})
2018-02-06 12:47:21 +00:00
const slackCachePromise = SlackGitHubCacheBuilder.build(robot, slackGitHubCache)
require('./bot_scripts/assign-new-pr-to-review')(robot)
require('./bot_scripts/assign-approved-pr-to-test')(robot)
require('./bot_scripts/assign-to-bounty-awaiting-for-approval')(robot)
require('./bot_scripts/greet-new-contributor')(robot)
require('./bot_scripts/trigger-automation-test-build')(robot)
2018-01-22 13:48:57 +00:00
await slackCachePromise
2018-02-06 12:47:21 +00:00
robot.log.info('Slack user ID cache populated, loading remainder of scripts')
// Add scripts which require using the Slack/GitHub cache after this comment
require('./bot_scripts/bounty-awaiting-approval-slack-ping')(robot, getSlackMentionFromGitHubId)
require('./bot_scripts/notify-reviewers-via-slack')(robot, getSlackIdFromGitHubId)
2018-01-22 13:48:57 +00:00
// For more information on building apps:
// https://probot.github.io/docs/
// To get your app running against GitHub, see:
// https://probot.github.io/docs/development/
}
function getSlackMentionFromGitHubId (gitHubId) {
const id = SlackGitHubCacheBuilder.getSlackIdFromGitHubId(gitHubId, slackGitHubCache)
if (!id) {
return null
}
return `<@${id}>`
}
function getSlackIdFromGitHubId (gitHubId) {
return SlackGitHubCacheBuilder.getSlackIdFromGitHubId(gitHubId, slackGitHubCache)
}