@@ -16,6 +16,12 @@ set -euo pipefail
1616# would mean that we couldn't use XODO comments in this script.
1717KEYWORD=$( echo XODO | sed -e ' s/X/T/' )
1818
19+ # TODO
20+
21+ # Make sure `rg` is installed (if this fails, `set -e` above will cause the
22+ # script to exit).
23+ rg --version > /dev/null
24+
1925# -H: Print filename (default for multiple files/recursive)
2026# -n: Print line number
2127# -w: Match whole words
@@ -25,6 +31,26 @@ if [ -n "$output" ]; then
2531 echo " Found $KEYWORD markers in the codebase." >&2
2632 echo " $KEYWORD is used for tasks that should be done before merging a PR; if you want to leave a message in the codebase, use FIXME." >&2
2733 echo " " >&2
28- echo " $output " >&2
34+ if [ " ${GITHUB_ACTIONS:- false} " == " true" ]; then
35+ echo " $output " | while IFS= read -r output; do
36+ # Parse format `file:line: message`
37+ file=$( echo " $output " | cut -d : -f 1)
38+ line=$( echo " $output " | cut -d : -f 2)
39+ message=$( echo " $output " | cut -d : -f 3-)
40+
41+ # Escape message for workflow command: % -> %25, \r -> %0D, \n -> %0A
42+ message=" ${message// ' %' / ' %25' } "
43+ message=" ${message// $' \r ' / ' %0D' } "
44+ message=" ${message// $' \n ' / ' %0A' } "
45+
46+ # Output the workflow command for GitHub Actions annotations. Use `::notice`
47+ # rather than `::error` so that the output is less visually distracting (the
48+ # `exit 1` below will still ensure that this causes CI to fail).
49+ echo " ::notice file=${file} ,line=${line} ,endLine=${line} ,title=$KEYWORD Found::${message} "
50+ done
51+ else
52+ echo " $output " >&2
53+ fi
54+
2955 exit 1
3056fi
0 commit comments