summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDJScias <djscias@hotmail.com>2014-04-24 22:37:04 +0200
committerDJScias <djscias@hotmail.com>2014-04-24 22:37:04 +0200
commit4efdf7fc0768ab7bd4a59eb7183e01ec6aaca21c (patch)
tree31fee5cb64ca619d9daec8fdb3ca84b98c1a215f
parent0ba513ed9e97ccbbd9fd1b65040ac216384f2dc6 (diff)
downloadpopcorn-hubot-4efdf7fc0768ab7bd4a59eb7183e01ec6aaca21c.zip
popcorn-hubot-4efdf7fc0768ab7bd4a59eb7183e01ec6aaca21c.tar.gz
popcorn-hubot-4efdf7fc0768ab7bd4a59eb7183e01ec6aaca21c.tar.bz2
First steps to github commits
-rw-r--r--hubot-scripts.json2
-rw-r--r--package.json3
-rw-r--r--scripts/github-commits.coffee54
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}"