Skip to content

Commit

Permalink
ci: make the whitespace report optional
Browse files Browse the repository at this point in the history
The `check-whitespace` CI job generates a formatted output file
containing whitespace error information. As not all CI providers support
rendering a formatted summary, make its generation optional.

Signed-off-by: Justin Tobler <jltobler@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
jltobler authored and gitster committed May 3, 2024
1 parent 66820fb commit 9bef980
Showing 1 changed file with 33 additions and 12 deletions.
45 changes: 33 additions & 12 deletions ci/check-whitespace.sh
Original file line number Diff line number Diff line change
@@ -1,9 +1,20 @@
#!/usr/bin/env bash
#
# Check that commits after a specified point do not contain new or modified
# lines with whitespace errors. An optional formatted summary can be generated
# by providing an output file path and url as additional arguments.
#

baseCommit=$1
outputFile=$2
url=$3

if test "$#" -ne 1 && test "$#" -ne 3
then
echo "USAGE: $0 <BASE_COMMIT> [<OUTPUT_FILE> <URL>]"
exit 1
fi

problems=()
commit=
commitText=
Expand Down Expand Up @@ -56,19 +67,29 @@ then
goodParent=${baseCommit: 0:7}
fi

echo "🛑 Please review the Summary output for further information."
echo "### :x: A whitespace issue was found in one or more of the commits." >"$outputFile"
echo "" >>"$outputFile"
echo "Run these commands to correct the problem:" >>"$outputFile"
echo "1. \`git rebase --whitespace=fix ${goodParent}\`" >>"$outputFile"
echo "1. \`git push --force\`" >>"$outputFile"
echo " " >>"$outputFile"
echo "Errors:" >>"$outputFile"
echo "A whitespace issue was found in onen of more of the commits."
echo "Run the following command to resolve whitespace issues:"
echo "git rebase --whitespace=fix ${goodParent}"

# If target output file is provided, write formatted output.
if test -n "$outputFile"
then
echo "🛑 Please review the Summary output for further information."
(
echo "### :x: A whitespace issue was found in one or more of the commits."
echo ""
echo "Run these commands to correct the problem:"
echo "1. \`git rebase --whitespace=fix ${goodParent}\`"
echo "1. \`git push --force\`"
echo ""
echo "Errors:"

for i in "${problems[@]}"
do
echo "${i}" >>"$outputFile"
done
for i in "${problems[@]}"
do
echo "${i}"
done
) >"$outputFile"
fi

exit 2
fi

0 comments on commit 9bef980

Please sign in to comment.