diff options
author | DJScias <djscias@hotmail.com> | 2014-04-24 22:37:04 +0200 |
---|---|---|
committer | DJScias <djscias@hotmail.com> | 2014-04-24 22:37:04 +0200 |
commit | 4efdf7fc0768ab7bd4a59eb7183e01ec6aaca21c (patch) | |
tree | 31fee5cb64ca619d9daec8fdb3ca84b98c1a215f | |
parent | 0ba513ed9e97ccbbd9fd1b65040ac216384f2dc6 (diff) | |
download | popcorn-hubot-4efdf7fc0768ab7bd4a59eb7183e01ec6aaca21c.zip popcorn-hubot-4efdf7fc0768ab7bd4a59eb7183e01ec6aaca21c.tar.gz popcorn-hubot-4efdf7fc0768ab7bd4a59eb7183e01ec6aaca21c.tar.bz2 |
First steps to github commits
-rw-r--r-- | hubot-scripts.json | 2 | ||||
-rw-r--r-- | package.json | 3 | ||||
-rw-r--r-- | scripts/github-commits.coffee | 54 |
3 files changed, 58 insertions, 1 deletions
diff --git a/hubot-scripts.json b/hubot-scripts.json index a8c0628..8aec84e 100644 --- a/hubot-scripts.json +++ b/hubot-scripts.json @@ -1 +1 @@ -["redis-brain.coffee", "shipit.coffee"] +["redis-brain.coffee", "shipit.coffee","github-commits.coffee"] diff --git a/package.json b/package.json index 2464af9..f2a317b 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,9 @@ "hubot": ">= 2.6.0 < 3.0.0", "hubot-scripts": ">= 2.5.0 < 3.0.0", "hubot-irc": "^0.2.2" + "url": "" + "querystring": "" + "gitio2": "2.0.0" }, "engines": { "node": ">= 0.8.x", diff --git a/scripts/github-commits.coffee b/scripts/github-commits.coffee new file mode 100644 index 0000000..2b35a6a --- /dev/null +++ b/scripts/github-commits.coffee @@ -0,0 +1,54 @@ +# Description: +# An HTTP Listener for notifications on github pushes +# +# Dependencies: +# "url": "" +# "querystring": "" +# "gitio2": "2.0.0" +# +# Configuration: +# Just put this url <HUBOT_URL>:<PORT>/hubot/gh-commits?room=<room> into you'r github hooks +# +# Commands: +# None +# +# URLS: +# POST /hubot/gh-commits?room=<room>[&type=<type] +# +# Authors: +# nesQuick + +url = require('url') +querystring = require('querystring') +gitio = require('gitio2') + +module.exports = (robot) -> + + robot.router.post "/hubot/gh-commits", (req, res) -> + query = querystring.parse(url.parse(req.url).query) + + res.end + + user = {} + user.room = query.room if query.room + user.type = query.type if query.type + + try + payload = JSON.parse req.body.payload + return if payload.zen? # initial ping + + if payload.commits.length > 0 + commitWord = if payload.commits.length > 1 then "commits" else "commit" + robot.send user, "Got #{payload.commits.length} new #{commitWord} from #{payload.commits[0].author.name} on #{payload.repository.name}" + for commit in payload.commits + do (commit) -> + gitio commit.url, (err, data) -> + robot.send user, " * #{commit.message} (#{if err then commit.url else data})" + else + if payload.created + robot.send user, "#{payload.pusher.name} created: #{payload.ref}: #{payload.base_ref}" + if payload.deleted + robot.send user, "#{payload.pusher.name} deleted: #{payload.ref}" + + catch error + console.log "github-commits error: #{error}. Payload: #{req.body.payload}" |