GHRH
Manage GitHub repository hooks easily on the command line.
Installation
Install the ruby gem:
$ gem install ghrh
Usage
General help
$ ghrh --help
Usage:
ghrh [OPTIONS] SUBCOMMAND [ARG] ...
Parameters:
SUBCOMMAND subcommand
[ARG] ... subcommand arguments
Subcommands:
auth get auth token from github
create create hook
delete delete hook
edit edit hook
get get information for a hook
hooks list known hooks and their parameters
list list hooks
test test hook
Options:
-h, --help print help
Pass --help
to each sub command for its usage.
Setting up
The Github token (ghrh.token
), repository (github.repo
), user (github.user
) and host (github.host
) are set and picked up from
the local or global git config. Environment variables work too GITHUB_REPO
, GITHUB_USER
, etc.
# fetch and set GitHub token, also can be set repository specific (pass --local)
$ ghrh auth r4um
Enter password for user r4um (never stored):
ghrh.token set to xyz012345 in global git config
Managing hooks
ghrh caches the hooks metadata from GitHub host in ~/.ghrh
.
List available hooks
$ ghrh hooks
activecollab
acunote
agilebench
agilezen
amazonsns
apiary
apoio
appharbor
asana
backlog
---cut---
View what paramaters (the schema) hook expects
$ ghrh hooks email
{"name"=>"email",
"events"=>["push"],
"supported_events"=>["public", "push"],
"schema"=>
[["string", "address"],
["password", "secret"],
["boolean", "send_from_author"]]}
The parameters are passed as key=value
pairs, for example create an email and a web hook
$ ghrh create -r r4um/dotfiles email [email protected] send_from_author=1
201 Created
$ ghrh create -r r4um/dotfiles web url=http://foo.com content_type=text/json
201 Created
Events can be selected via -e
switch.
If no repository is provided its picked up from github.repo
git config setting.
Too see a list of hooks
$ ghrh list r4um/dotfiles
-------------------------------
id name active events
-------------------------------
954777 email true push
956443 web true push
-------------------------------
Hooks can be viewed, edited, tested or deleted by their id from the list above.
$ ghrh edit -r r4um/dotfiles 954777 address=nobody@localhost
200 OK
$ ghrh get -r r4um/dotfiles 954777
200 OK
{"url"=>"https://api.github.com/repos/r4um/dotfiles/hooks/954777",
"test_url"=>"https://api.github.com/repos/r4um/dotfiles/hooks/954777/test",
"id"=>954777,
"name"=>"email",
"active"=>true,
"events"=>["push"],
"config"=>{"address"=>"nobody@localhost"},
"last_response"=>{"code"=>200, "status"=>"ok", "message"=>"OK"},
"updated_at"=>"2013-05-14T12:19:30Z",
"created_at"=>"2013-05-13T19:52:50Z"}
$ ghrh test -t r4um/dotfiles 954777
204 No Content
nil
$ ghrh delete -r r4um/dotfiles 954777
204 No Content
Deleted
To refresh the hooks cache
$ ghrh hooks --refresh
Wrote hooks cache to /Users/pranay.kanwar/.ghrh/hooks_api.github.com.json