install.fairie/.config/taskfiles/git/Taskfile-hook.yml
Brian Zalewski f42899b107 Latest
2022-12-24 15:04:59 -05:00

103 lines
3.3 KiB
YAML

---
version: '3'
vars:
GIT_NOTIFY_COLOR: '#0450ec'
tasks:
commit-msg:
deps:
- :lint:commit
log:
error: '`commit-msg` hook encountered an error!'
start: '`commit-msg` hook running..'
post-checkout:
deps:
- :install:npm:git-notify
- :install:npm:yarnhook
log:
error: '`post-checkout` hook encountered an error!'
start: '`post-checkout` hook running..'
cmds:
- git-notify checkout --prefix "@notify" --color "{{.GIT_NOTIFY_COLOR}}" "$GIT_PARAMS"
- yarnhook
post-commit:
log:
error: '`post-commit` hook encountered an error!'
start: '`post-commit` hook running..'
cmds:
- 'true'
post-merge:
deps:
- :install:npm:git-notify
- :install:npm:yarnhook
log:
error: '`post-merge` hook encountered an error!'
start: '`post-merge` hook running..'
cmds:
- git-notify merge --prefix "@notify" --color "{{.GIT_NOTIFY_COLOR}}" "$GIT_PARAMS"
- yarnhook
post-rewrite:
deps:
- :install:npm:git-notify
- :install:npm:yarnhook
log:
error: '`post-rewrite` hook encountered an error!'
start: '`post-rewrite` hook running..'
cmds:
- git-notify rewrite --prefix "@notify" --color "{{.GIT_NOTIFY_COLOR}}" "$GIT_PARAMS"
- yarnhook
pre-commit:
deps:
- :fix:json
- :fix:misc
- :security:gitleaks
- :security:private-keys
log:
error: '`pre-commit` hook encountered an error!'
start: '`pre-commit` hook running..'
pre-push:
vars:
GITHUB_TOKEN:
sh: echo "$GITHUB_TOKEN"
GITLAB_TOKEN:
sh: echo "$GITLAB_TOKEN"
log:
error: '`pre-push` hook encountered an error!'
start: '`pre-push` hook running..'
cmds:
- |
REMOTE={{index (split " " (trimAll "'" .CLI_ARGS)) "_0"}}
URL={{index (split " " (trimAll "'" .CLI_ARGS)) "_1" | replace .GITLAB_TOKEN "" | replace .GITHUB_TOKEN ""}}
if [[ $URL == http* ]]; then
URL="$(echo $URL | sed 's/^[^@]*@/git@/')"
fi
HOST="$(echo $URL | sed 's/^.*@//' | sed 's/:.*$//')"
ORG="$(echo $URL | sed 's/^.*://' | sed 's/\/.*$//')"
PROJECT="$(echo $URL | sed 's/^[^\/]*\///' | sed 's/.[^\.]*$//')"
IFS=' '
while read local_ref local_sha remote_ref remote_sha; do
# local_ref -> refs/heads/master
# local_sha -> b14959a077c9b6ced19c29d5ba9c75ddbad5d3ea
# remote_ref -> refs/heads/master
# remote_sha -> 9901a2eb2f34d5744276a80c4b339a88a92a7b53
REMOTE_BRANCH="$(echo $remote_ref | sed 's/^[^\/]*\/[^\/]*\///')"
.config/log star "Repository -----> https://$HOST/$ORG/$PROJECT"
if [ "$HOST" == 'gitlab.com' ]; then
if [ "$REMOTE_BRANCH" != 'master' ]; then
.config/log star "Open PR --------> https://$HOST/$ORG/$PROJECT/-/merge_requests/new"
fi
.config/log star "View commit ----> https://$HOST/$ORG/$PROJECT/-/commit/$local_sha"
elif [ "$HOST" == 'github.com' ]; then
if [ "$REMOTE_BRANCH" != 'master' ]; then
.config/log star "Open PR --------> https://$HOST/$ORG/$PROJECT/pull/new/$REMOTE_BRANCH"
fi
.config/log star "View commit ----> https://$HOST/$ORG/$PROJECT/commit/$local_sha"
fi
done