hubot-deploy
Version:
hubot script for GitHub Flow
58 lines (50 loc) • 2.82 kB
text/coffeescript
# Description
# Enable deployments from chat that correctly attribute you as the creator - https://github.com/atmos/hubot-deploy
#
# Commands:
# hubot deploy-token:set:github <token> - Sets your user's GitHub deployment token. Requires repo scope.
# hubot deploy-token:reset:github - Resets your user's GitHub deployment token.
# hubot deploy-token:verify:github - Verifies that your GitHub deployment token is valid.
#
supported_tasks = [ "#{DeployPrefix}-token" ]
Path = require("path")
Patterns = require(Path.join(__dirname, "..", "models", "patterns"))
Deployment = require(Path.join(__dirname, "..", "github", "api")).Deployment
DeployPrefix = Patterns.DeployPrefix
DeployPattern = Patterns.DeployPattern
DeploysPattern = Patterns.DeploysPattern
Verifiers = require(Path.join(__dirname, "..", "models", "verifiers"))
TokenForBrain = Verifiers.VaultKey
ApiTokenVerifier = Verifiers.ApiTokenVerifier
###########################################################################
module.exports = (robot) ->
if process.env.HUBOT_DEPLOY_PRIVATE_MESSAGE_TOKEN_MANAGEMENT is "true"
robot.respond ///#{DeployPrefix}-token:set:github\s+(.*)///i, id: "hubot-deploy.token.set", (msg) ->
user = robot.brain.userForId msg.envelope.user.id
token = msg.match[1]
# Versions of hubot-deploy < 0.9.0 stored things unencrypted, encrypt them.
delete(user.githubDeployToken)
verifier = new ApiTokenVerifier(token)
verifier.valid (result) ->
if result
robot.vault.forUser(user).set(TokenForBrain, verifier.token)
msg.send "Your GitHub token is valid. I stored it for future use."
else
msg.send "Your GitHub token is invalid, verify that it has 'repo' scope."
robot.respond ///#{DeployPrefix}-token:reset:github$///i, id: "hubot-deploy.token.reset", (msg) ->
user = robot.brain.userForId msg.envelope.user.id
robot.vault.forUser(user).unset(TokenForBrain)
# Versions of hubot-deploy < 0.9.0 stored things unencrypted, encrypt them.
delete(user.githubDeployToken)
msg.reply "I nuked your GitHub token. I'll try to use my default token until you configure another."
robot.respond ///#{DeployPrefix}-token:verify:github$///i, id: "hubot-deploy.token.verify", (msg) ->
user = robot.brain.userForId msg.envelope.user.id
# Versions of hubot-deploy < 0.9.0 stored things unencrypted, encrypt them.
delete(user.githubDeployToken)
token = robot.vault.forUser(user).get(TokenForBrain)
verifier = new ApiTokenVerifier(token)
verifier.valid (result) ->
if result
msg.send "Your GitHub token is valid on #{verifier.config.hostname}."
else
msg.send "Your GitHub token is invalid, verify that it has 'repo' scope."