-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtravis.coffee
55 lines (46 loc) · 1.76 KB
/
travis.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# Description:
# Find the build status of an open-source project on Travis
# Can also notify about builds, just enable the webhook notification on travis http://about.travis-ci.org/docs/user/build-configuration/ -> 'Webhook notification'
#
# Dependencies:
#
# Configuration:
# None
#
# Commands:
# hubot travis me <user>/<repo> - Returns the build status of https://github.com/<user>/<repo>
#
# URLS:
# POST /hubot/travis?room=<room>[&type=<type]
#
# Author:
# sferik
# nesQuick
# sergeylukin
url = require('url')
querystring = require('querystring')
module.exports = (robot) ->
robot.respond /travis me (.*)/i, (msg) ->
project = escape(msg.match[1])
msg.http("https://api.travis-ci.org/repos/#{project}")
.get() (err, res, body) ->
response = JSON.parse(body)
if response.last_build_status == 0
msg.send "Build status for #{project}: Passing"
else if response.last_build_status == 1
msg.send "Build status for #{project}: Failing"
else
msg.send "Build status for #{project}: Unknown"
robot.router.post "/hubot/travis", (req, res) ->
query = querystring.parse url.parse(req.url).query
user = {}
user.room = query.room if query.room
user.type = query.type if query.type
try
payload = JSON.parse req.body.payload
robot.send user, "#{payload.status_message.toUpperCase()} build (#{payload.build_url}) on #{payload.repository.name}:#{payload.branch} by #{payload.author_name} with commit (#{payload.compare_url})"
catch error
console.log "travis hook error: #{error}. Payload: #{req.body.payload}"
res.end JSON.stringify {
send: true #some client have problems with and empty response, sending that response ion sync makes debugging easier
}