## ライブラリを使う方法
- [[📕huskyでプッシュ前に自動でTypeScriptの型チェックとテスト実行]]
## ライブラリを使わない方法
[[Bash]]が動作するなら、[[pre-pushフック]]のスクリプトを作成する。
```bash
#!/bin/bash
if ! cd "$(git rev-parse --show-toplevel)"; then
echo "cd error"
exit 1
fi
branch=$(git rev-parse --abbrev-ref HEAD)
# shellcheck disable=SC2063
ancestor_branch=$(git show-branch | grep '*' | grep -v "${branch}" | head -1 | awk -F'[]~^[]' '{print $2}')
if git rev-parse --verify origin/"${branch}" >/dev/null 2>&1; then
from=$(git merge-base HEAD origin/"${branch}")
else
# 新しいブランチの場合
from=${ancestor_branch}
fi
# 特定ディレクトリ配下に変更がある場合のみ実行. 常に実行ならif文は不要
if git diff --name-only "${from}".."${branch}" | grep -Eq "^src/"; then
echo ":frog: Check src"
if cd src && ! task lint; then
echo "Linting failed. Aborting push."
exit 1
fi
fi
exit 0
```