1
+ #! /bin/bash
2
+
3
+ set -eu
4
+
5
+ REPO_TOKEN=" $1 "
6
+ DTA_IS_FLUTTER=" $2 "
7
+ DTA_DISABLE_LINTER=" $3 "
8
+ DTA_DISABLE_ANALYZER=" $4 "
9
+ DTA_DISABLE_TESTS=" $5 "
10
+ DTA_EXCLUDE_REGEX=" $6 "
11
+
12
+ echo " DTA_IS_FLUTTER=$DTA_IS_FLUTTER "
13
+ echo " DTA_DISABLE_LINTER=$DTA_DISABLE_LINTER "
14
+ echo " DTA_DISABLE_ANALYZER=$DTA_DISABLE_ANALYZER "
15
+ echo " DTA_DISABLE_TESTS=$DTA_DISABLE_TESTS "
16
+ echo " DTA_EXCLUDE_REGEX=$DTA_EXCLUDE_REGEX "
17
+
18
+ cd " $GITHUB_WORKSPACE "
19
+
20
+ PR_HREF=$( cat " $GITHUB_EVENT_PATH " | jq -r ' .pull_request._links.self.href' )
21
+
22
+ function send_message_and_bail {
23
+ ERROR=" $1 "
24
+ DETAIL=" $2 "
25
+
26
+ if [ ! -z " $REPO_TOKEN " ]; then
27
+ BODY=$( cat << EOF
28
+ $ERROR
29
+
30
+ <details>
31
+ <pre>
32
+ $DETAIL
33
+ </pre>
34
+ </details>
35
+ EOF
36
+ )
37
+
38
+ jq -c -n --arg body " $BODY " ' {"event":"COMMENT", "body":$body}' > /tmp/payload.json
39
+ curl -f -X POST \
40
+ -H ' Content-Type: application/json' \
41
+ -H " Authorization: Bearer $REPO_TOKEN " \
42
+ --data " @/tmp/payload.json" \
43
+ " $PR_HREF /reviews" -vv || true
44
+ fi
45
+
46
+ echo " ------------------------------------------------"
47
+ echo " $ERROR "
48
+ echo " $DETAIL "
49
+ echo " ------------------------------------------------"
50
+ exit 1
51
+ }
52
+
53
+ for ppath in $( find . -name pubspec.yaml | grep -ve " $DTA_EXCLUDE_REGEX " ) ; do
54
+ echo " === On $ppath ==="
55
+ cd $( dirname " $ppath " ) ;
56
+
57
+ echo " === Downloading dependencies ==="
58
+ if [ " $DTA_IS_FLUTTER " = " false" ]; then
59
+ pub get
60
+ else
61
+ flutter pub get
62
+ fi
63
+
64
+ if [ " $DTA_DISABLE_LINTER " = " false" ]; then
65
+ echo " === Running linter ==="
66
+ OUTPUT=$( dartfmt -n . --set-exit-if-changed 2>&1 )
67
+
68
+ if [ $? -ne 0 ]; then
69
+ send_message_and_bail " Linter has failed! \` dartfmt -n . --set-exit-if-changed\` :" " $OUTPUT "
70
+ fi
71
+ fi
72
+
73
+ if [ " $DTA_DISABLE_ANALYZER " = " false" ]; then
74
+ echo " === Running analyzer ==="
75
+ OUTPUT=$( dartanalyzer --fatal-infos --fatal-warnings . 2>&1 ) || send_message_and_bail " Analyzer has failed! \` dartanalyzer --fatal-infos --fatal-warnings .\` :" " $OUTPUT "
76
+ fi
77
+
78
+ [ -d " test" ] && {
79
+ if [ " $DTA_DISABLE_TESTS " = " false" ]; then
80
+ echo " === Running tests ==="
81
+ if [ " $DTA_IS_FLUTTER " = " false" ]; then
82
+ OUTPUT=$( pub run test --no-color -r expanded 2>&1 ) || send_message_and_bail " Tests failed!" " $OUTPUT "
83
+ else
84
+ OUTPUT=$( flutter test 2>&1 ) || send_message_and_bail " Tests have failed! \` pub run test\` :" " $OUTPUT "
85
+ fi
86
+ fi
87
+ }
88
+
89
+ # Go back
90
+ cd -
91
+ done
0 commit comments