12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- debug () {
- if [ "$HUSKY_DEBUG" = "true" ] || [ "$HUSKY_DEBUG" = "1" ]; then
- echo "husky:debug $1"
- fi
- }
- command_exists () {
- command -v "$1" >/dev/null 2>&1
- }
- run_command () {
- if command_exists "$1"; then
- "$@" husky-run $hookName $gitParams
- exitCode="$?"
- debug "$* husky-run exited with $exitCode exit code"
- if [ $exitCode -eq 127 ]; then
- echo "Can't find Husky, skipping $hookName hook"
- echo "You can reinstall it using 'npm install husky --save-dev' or delete this hook"
- else
- exit $exitCode
- fi
- else
- echo "Can't find $1 in PATH: $PATH"
- echo "Skipping $hookName hook"
- exit 0
- fi
- }
- hookIsDefined () {
- grep -qs $hookName \
- package.json \
- .huskyrc \
- .huskyrc.json \
- .huskyrc.yaml \
- .huskyrc.yml
- }
- huskyVersion="0.0.0"
- gitParams="$*"
- hookName="$(basename "$0")"
- debug "husky v$huskyVersion - $hookName"
- # Skip if HUSKY_SKIP_HOOKS is set
- if [ "$HUSKY_SKIP_HOOKS" = "true" ] || [ "$HUSKY_SKIP_HOOKS" = "1" ]; then
- debug "HUSKY_SKIP_HOOKS is set to $HUSKY_SKIP_HOOKS, skipping hook"
- exit 0
- fi
- # Source user var and change directory
- . "$(dirname "$0")/husky.local.sh"
- debug "Current working directory is $(pwd)"
- # Skip fast if hookName is not defined
- # Don't skip if .huskyrc.js or .huskyrc.config.js are used as the heuristic could
- # fail due to the dynamic aspect of JS. For example:
- # `"pre-" + "commit"` or `require('./config/hooks')`)
- if [ ! -f .huskyrc.js ] && [ ! -f huskyrc.cjs ] && [ ! -f husky.config.js ] && [ ! -f husky.config.cjs ] && ! hookIsDefined; then
- debug "$hookName config not found, skipping hook"
- exit 0
- fi
- # Source user ~/.huskyrc
- if [ -f ~/.huskyrc ]; then
- debug "source ~/.huskyrc"
- . ~/.huskyrc
- fi
- # Set HUSKY_GIT_STDIN from stdin
- case $hookName in
- "pre-push"|"post-rewrite")
- export HUSKY_GIT_STDIN="$(cat)";;
- esac
- # Windows 10, Git Bash and Yarn 1 installer
- if command_exists winpty && test -t 1; then
- exec < /dev/tty
- fi
- # Run husky-run with the package manager used to install Husky
- case $packageManager in
- "npm") run_command npx --no-install;;
- "npminstall") run_command npx --no-install;;
- "pnpm") run_command pnpx --no-install;;
- "yarn") run_command yarn run --silent;;
- *) echo "Unknown package manager: $packageManager"; exit 0;;
- esac
|