bigtallbill / hooker
An extendable PHP commit hook
Requires
- symfony/console: 2.6.4
Requires (Dev)
- phpunit/phpunit: 4.3.*
- satooshi/php-coveralls: dev-master
This package is not auto-updated.
Last update: 2024-11-20 14:36:10 UTC
README
hooker
An extendable php commit hook
Installation
- Download binary https://github.com/bigtallbill/hooker/releases/tag/0.1.0
- Copy the binary release to a directory that is loaded by your PATH
- Make the file executable
chmod a+x hooker
- Check installation
which hooker
Usage
- open a terminal and cd to the target repository
- run
hooker install
This will install a hooker.json config file and also update the commit hook files for this repo to execute hooker
Now when you try to commit something for example. hooker will execute.
hooker.json Config
The hooker.json config file contains settings for each type of hook.
{
"preCommit": {},
"commitMsg": {
"firstWordImperative": true,
"maxSummaryLength": 50,
"maxContentLength": 72,
"summaryIgnoreUrls": true,
"contentIgnoreUrls": true,
"lineAfterSummaryMustBeBlank": true,
"scripts": {
"after": [
{
"cmd": "runtests.sh",
"passGitArgs": false,
""
}
]
}
}
}
"scripts"
Every hook type can have the element scripts
. This allows you to execute arbitrary code that is not a native hooker
check.
"scripts": {
"after": [
{
"cmd": "runtests.sh"
}
]
}
The "after" key defines when to run the script (currently after is the only one). After means run after hooker's own internal code for that hook.
Then we have an array of scripts to run.
Here is a sample script object:
{
"cmd": "runtests.sh",
"passGitArgs": false,
"relativeToRepo": false
}
"cmd" is the command to execute
"passGitArgs" When set to true will append the git arguments onto the scripts existing arguments
"relativeToRepo" Execute this script relative to the repo. Currently this is pretty dumb, it will just prepend the repository path to the cmd.
"commitMsg"
- firstWordImperative = Ensure that the first word in a commit message is imperative present-tense
- maxSummaryLength = The maximum length of the summary line
- maxContentLength = The maximum length of the message body
- summaryIgnoreUrls = Ignore length of lines with urls in (useful if you cant help the length of urls)
- contentIgnoreUrls = Ignore length of lines with urls in (useful if you cant help the length of urls)
- lineAfterSummaryMustBeBlank = Ensure that the line after the summary is blank