@@ -16,6 +16,12 @@ set -euo pipefail
16
16
# would mean that we couldn't use XODO comments in this script.
17
17
KEYWORD=$( echo XODO | sed -e ' s/X/T/' )
18
18
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
+
19
25
# -H: Print filename (default for multiple files/recursive)
20
26
# -n: Print line number
21
27
# -w: Match whole words
@@ -25,6 +31,26 @@ if [ -n "$output" ]; then
25
31
echo " Found $KEYWORD markers in the codebase." >&2
26
32
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
27
33
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
+
29
55
exit 1
30
56
fi
0 commit comments