hookshot

![](http://i.cloudup.com/i_vGKjtQcY2.png)

npm install hookshot
10 downloads in the last day
54 downloads in the last week
236 downloads in the last month

hookshot

"You found the hookshot! It's a spring-loaded chain that you can cast out to hook things."

Intro

hookshot is a tiny library and companion CLI tool for handling GitHub post-receive hooks.

Examples

Library

var hookshot = require('hookshot');
hookshot('refs/heads/master', 'git pull && make').listen(3000)

CLI Tool

hookshot -r refs/heads/master 'git pull && make'

Usage

The library exposes a single function, hookshot(). When called, this functions returns an express instance configured to handle post-receive hooks from GitHub. You can react to pushes to specific branches by listening to specific events on the returned instance, or by providing optional arguments to the hookshot() function.

hookshot()
.on('refs/heads/master', 'git pull && make')
.listen(3000)
hookshot('refs/heads/master', 'git pull && make').listen(3000)

Actions

Actions can either be shell commands or JavaScript functions.

hookshot('refs/heads/master', 'git pull && make').listen(3000)
hookshot('refs/heads/master', function(info) {
  // do something with push info ...
}).listen(3000)

Mounting to existing express servers

hookshot can be mounted to a custom route on your existing express server:

// ...
app.use('/my-github-hook', hookshot('refs/heads/master', 'git pull && make'));
// ...

Special Events

Special events are fired when branches/tags are created, deleted:

hookshot()
.on('create', function(info) {
  console.log('ref ' + info.ref + ' was created.')
})
.on('delete', function(info) {
  console.log('ref ' + info.ref + ' was deleted.')
})

The push event is fired when a push is made to any ref:

hookshot()
.on('push', function(info) {
  console.log('ref ' + info.ref + ' was pushed.')
})

Finally, the hook event is fired for every post-receive hook that is send by GitHub.

hookshot()
.on('push', function(info) {
  console.log('ref ' + info.ref + ' was pushed.')
})

CLI Tool

A companion CLI tool is provided for convenience. To use it, install hookshot via npm using the -g flag:

npm install -g hookshot

The CLI tool takes as argument a command to execute upon GitHub post-receive hook:

hookshot 'echo "PUSHED!"'

You can optionally specify an HTTP port via the -p flag (defaults to 3000) and a ref via the -r flag (defaults to all refs):

hookshot -r refs/heads/master -p 9001 'echo "pushed to master!"'
npm loves you