Conditions
Here's a list of all built-in conditions:
All hooks | |
---|---|
CaptainHook::Status.OnBranch | Check if we are on a particular branch |
CaptainHook::Config.CustomValueIsTruthy | Check if a custom config is true, 1, yes or on |
CaptainHook::Config.CustomValueIsFalsy | Check if a custom config is false, 0, no or off |
pre-commit | |
CaptainHook::FileStaged.All | Check if all of the configured files are staged for commit |
CaptainHook::FileStaged.Any | Check if any of the configured files is staged for commit |
CaptainHook::FileStaged.ThatIs | Check if a file of a given type, or in a given directory is staged for commit |
post-checkout / post-merge / post-rewrite / pre-push | |
CaptainHook::FileChange.All | Check if all of the configured files are changed |
CaptainHook::FileChange.Any | Check if any of the configured files is changed |
CaptainHook::FileChange.ThatIs | Check if a file was changed that is of a given type or in a given directory |
You can build your own conditions. Just use a simple script or binary which must return an exit code. The exit code 0 means the condition applies; any exit code other than 0 means the condition does not apply.
OnBranch
all hooks
This Condition expects just one argument, the name of the branch.
{
"conditions": [
{
"run": "CaptainHook::Status.OnBranch",
"options": {
"branch": "master"
}
}
]
}
CustomValueIsTruthy
all hooks
This Condition expects just one argument, the name of the custom config value to check.
{
"conditions": [
{
"run": "CaptainHook::Config.CustomConfigValueIsTruthy",
"options": {
"value": "MY_CONFIG_VALUE"
}
}
]
}
CustomValueIsFalsy
all hooks
This Condition expects just one argument, the name of the custom config value to check.
{
"conditions": [
{
"run": "CaptainHook::Config.CustomConfigValueIsFalsy",
"options": {
"value": "MY_CONFIG_VALUE"
}
}
]
}
FileStaged.All
pre-commit
Expecting a list of file names or pattern.
{
"conditions": [
{
"run": "CaptainHook::FileStaged.All",
"options": {
"files": ["foo.html", "bar.html", "*.css"]
}
}
]
}
FileStaged.Any
pre-commit
Expecting a list of file names or pattern.
{
"conditions": [
{
"run": "CaptainHook::FileStaged.Any",
"options": {
"files": ["foo.html", "bar.html", "*.css"]
}
}
]
}
FileStaged.ThatIs
pre-commit
Expecting just the type of file you want to watch as string.
{
"conditions": [
{
"run": "CaptainHook::FileStaged.OfType",
"options": {
"of-type": "go",
"in-directory": "cmd"
}
}
]
}
FileChanged.All
post-checkout post-merge
Expecting a list of file names or pattern.
{
"conditions": [
{
"run": "CaptainHook::FileChanged.All",
"options": {
"files": ["foo.html", "bar.html", "*.php"]
}
}
]
}
FileChanged.Any
post-checkout post-merge
Expecting a list of file names or pattern.
{
"conditions": [
{
"run": "CaptainHook::FileChanged.Any‚",
"options": {
"files": ["foo.html", "bar.html", "*.css"]
}
}
]
}
FileChanged.ThatIs
pre-push
Expecting just the type of file you want to watch as string.
{
"conditions": [
{
"run": "CaptainHook::FileChange.OfType",
"options": {
"of-type": "go",
"in-directory": "cmd"
}
}
]
}