|
@@ -38,6 +38,15 @@ else
|
|
READER=cat
|
|
READER=cat
|
|
fi
|
|
fi
|
|
|
|
|
|
|
|
+# Path to zenity
|
|
|
|
+ZENITY=`which zenity`
|
|
|
|
+
|
|
|
|
+# Path to xmessage
|
|
|
|
+XMSG=`which xmessage`
|
|
|
|
+
|
|
|
|
+# Path to powershell (Windows only)
|
|
|
|
+PWSH=`which powershell`
|
|
|
|
+
|
|
##################################################################
|
|
##################################################################
|
|
# There should be no need to change anything below this line.
|
|
# There should be no need to change anything below this line.
|
|
|
|
|
|
@@ -66,6 +75,19 @@ else
|
|
fi
|
|
fi
|
|
|
|
|
|
if [ ! -x "$CLANG_FORMAT" ] ; then
|
|
if [ ! -x "$CLANG_FORMAT" ] ; then
|
|
|
|
+ if [ ! -t 1 ] ; then
|
|
|
|
+ if [ -x "$ZENITY" ] ; then
|
|
|
|
+ $ZENITY --error --title="Error" --text="Error: clang-format executable not found."
|
|
|
|
+ exit 1
|
|
|
|
+ elif [ -x "$XMSG" ] ; then
|
|
|
|
+ $XMSG -center -title "Error" "Error: clang-format executable not found."
|
|
|
|
+ exit 1
|
|
|
|
+ elif [ \( \( "$OSTYPE" = "msys" \) -o \( "$OSTYPE" = "win32" \) \) -a \( -x "$PWSH" \) ]; then
|
|
|
|
+ winmessage="$(canonicalize_filename "./.git/hooks/winmessage.ps1")"
|
|
|
|
+ $PWSH -noprofile -executionpolicy bypass -file "$winmessage" -center -title "Error" --text "Error: clang-format executable not found."
|
|
|
|
+ exit 1
|
|
|
|
+ fi
|
|
|
|
+ fi
|
|
printf "Error: clang-format executable not found.\n"
|
|
printf "Error: clang-format executable not found.\n"
|
|
printf "Set the correct path in $(canonicalize_filename "$0").\n"
|
|
printf "Set the correct path in $(canonicalize_filename "$0").\n"
|
|
exit 1
|
|
exit 1
|
|
@@ -117,14 +139,62 @@ fi
|
|
# a patch has been created, notify the user and exit
|
|
# a patch has been created, notify the user and exit
|
|
printf "\nThe following differences were found between the code to commit "
|
|
printf "\nThe following differences were found between the code to commit "
|
|
printf "and the clang-format rules:\n\n"
|
|
printf "and the clang-format rules:\n\n"
|
|
-$READER "$patch"
|
|
|
|
-printf "\n"
|
|
|
|
|
|
|
|
-# Allows us to read user input below, assigns stdin to keyboard
|
|
|
|
-exec < /dev/tty
|
|
|
|
|
|
+if [ -t 1 ] ; then
|
|
|
|
+ $READER "$patch"
|
|
|
|
+ printf "\n"
|
|
|
|
+ # Allows us to read user input below, assigns stdin to keyboard
|
|
|
|
+ exec < /dev/tty
|
|
|
|
+ terminal="1"
|
|
|
|
+else
|
|
|
|
+ cat "$patch"
|
|
|
|
+ printf "\n"
|
|
|
|
+ # Allows non zero zenity/powershell output
|
|
|
|
+ set +e
|
|
|
|
+ terminal="0"
|
|
|
|
+fi
|
|
|
|
|
|
while true; do
|
|
while true; do
|
|
- read -p "Do you want to apply that patch (Y - Apply, N - Do not apply, S - Apply and stage files)? [Y/N/S] " yn
|
|
|
|
|
|
+ if [ $terminal = "0" ] ; then
|
|
|
|
+ if [ -x "$ZENITY" ] ; then
|
|
|
|
+ ans=$($ZENITY --text-info --filename="$patch" --width=800 --height=600 --title="Do you want to apply that patch?" --ok-label="Apply" --cancel-label="Do not apply" --extra-button="Apply and stage")
|
|
|
|
+ if [ "$?" = "0" ] ; then
|
|
|
|
+ yn="Y"
|
|
|
|
+ else
|
|
|
|
+ if [ "$ans" = "Apply and stage" ] ; then
|
|
|
|
+ yn="S"
|
|
|
|
+ else
|
|
|
|
+ yn="N"
|
|
|
|
+ fi
|
|
|
|
+ fi
|
|
|
|
+ elif [ -x "$XMSG" ] ; then
|
|
|
|
+ $XMSG -file "$patch" -buttons "Apply":100,"Apply and stage":200,"Do not apply":0 -center -default "Do not apply" -geometry 800x600 -title "Do you want to apply that patch?"
|
|
|
|
+ ans=$?
|
|
|
|
+ if [ "$ans" = "100" ] ; then
|
|
|
|
+ yn="Y"
|
|
|
|
+ elif [ "$ans" = "200" ] ; then
|
|
|
|
+ yn="S"
|
|
|
|
+ else
|
|
|
|
+ yn="N"
|
|
|
|
+ fi
|
|
|
|
+ elif [ \( \( "$OSTYPE" = "msys" \) -o \( "$OSTYPE" = "win32" \) \) -a \( -x "$PWSH" \) ]; then
|
|
|
|
+ winmessage="$(canonicalize_filename "./.git/hooks/winmessage.ps1")"
|
|
|
|
+ $PWSH -noprofile -executionpolicy bypass -file "$winmessage" -file "$patch" -buttons "Apply":100,"Apply and stage":200,"Do not apply":0 -center -default "Do not apply" -geometry 800x600 -title "Do you want to apply that patch?"
|
|
|
|
+ ans=$?
|
|
|
|
+ if [ "$ans" = "100" ] ; then
|
|
|
|
+ yn="Y"
|
|
|
|
+ elif [ "$ans" = "200" ] ; then
|
|
|
|
+ yn="S"
|
|
|
|
+ else
|
|
|
|
+ yn="N"
|
|
|
|
+ fi
|
|
|
|
+ else
|
|
|
|
+ printf "Error: zenity, xmessage, or powershell executable not found.\n"
|
|
|
|
+ exit 1
|
|
|
|
+ fi
|
|
|
|
+ else
|
|
|
|
+ read -p "Do you want to apply that patch (Y - Apply, N - Do not apply, S - Apply and stage files)? [Y/N/S] " yn
|
|
|
|
+ fi
|
|
case $yn in
|
|
case $yn in
|
|
[Yy] ) git apply $patch;
|
|
[Yy] ) git apply $patch;
|
|
printf "The patch was applied. You can now stage the changes and commit again.\n\n";
|
|
printf "The patch was applied. You can now stage the changes and commit again.\n\n";
|