1
0
Fork 0
gitlint/gitlint/files/commit-msg
Daniel Baumann a06c1515ef
Adding upstream version 0.14.0.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-02-13 06:01:51 +01:00

35 lines
1.3 KiB
Bash

#!/bin/sh
### gitlint commit-msg hook start ###
# Determine whether we have a tty available by trying to access it.
# This allows us to deal with UI based gitclient's like Atlassian SourceTree.
# NOTE: "exec < /dev/tty" sets stdin to the keyboard
stdin_available=1
(exec < /dev/tty) 2> /dev/null || stdin_available=0
if [ $stdin_available -eq 1 ]; then
# Now that we know we have a functional tty, set stdin to it so we can ask the user questions :-)
exec < /dev/tty
# On Windows, we need to explicitely set our stdout to the tty to make terminal editing work (e.g. vim)
# See SO for windows detection in bash (slight modified to work on plain shell (not bash)):
# https://stackoverflow.com/questions/394230/how-to-detect-the-os-from-a-bash-script
if [ "$OSTYPE" = "cygwin" ] || [ "$OSTYPE" = "msys" ] || [ "$OSTYPE" = "win32" ]; then
exec > /dev/tty
fi
fi
gitlint --staged --msg-filename "$1" run-hook
exit_code=$?
# If we fail to find the gitlint binary (command not found), let's retry by executing as a python module.
# This is the case for Atlassian SourceTree, where $PATH deviates from the user's shell $PATH.
if [ $exit_code -eq 127 ]; then
echo "Fallback to python module execution"
python -m gitlint.cli --staged --msg-filename "$1" run-hook
exit_code=$?
fi
exit $exit_code
### gitlint commit-msg hook end ###