hookshot

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

  • Owner: coreh/hookshot
  • Platform:
  • License:: MIT License
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

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!"'

Overview

Name With Ownercoreh/hookshot
Primary LanguageJavaScript
Program languageJavaScript (Language Count: 1)
Platform
License:MIT License
Release Count3
Last Release Name0.1.0 (Posted on 2014-09-16 16:03:17)
First Release Name0.0.1 (Posted on 2013-04-22 12:42:39)
Created At2013-04-21 05:35:35
Pushed At2017-12-06 17:16:58
Last Commit At2014-09-16 16:03:17
Stargazers Count145
Watchers Count7
Fork Count25
Commits Count20
Has Issues Enabled
Issues Count9
Issue Open Count7
Pull Requests Count2
Pull Requests Open Count5
Pull Requests Close Count0
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private
To the top