26
26
uses : actions/checkout@v4
27
27
28
28
- name : Get changed files
29
+ id : check
29
30
env :
30
31
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
31
32
BASE_SHA : ${{ github.event.pull_request.base.sha }}
@@ -37,17 +38,17 @@ jobs:
37
38
--jq '.files | .[] | select(.status|IN("added", "modified", "renamed", "copied", "changed")) | .filename')
38
39
# filter out files that are not markdown
39
40
DIFF_DOCUMENTS=$(echo "${DIFF_DOCUMENTS}" | egrep -i "^files/.*\.md$" | xargs)
40
- echo "DIFF_DOCUMENTS=${DIFF_DOCUMENTS}" >> $GITHUB_ENV
41
+ echo "DIFF_DOCUMENTS=${DIFF_DOCUMENTS}" >> "$GITHUB_OUTPUT"
41
42
42
43
- name : Checkout HEAD
43
- if : env .DIFF_DOCUMENTS
44
+ if : steps.check.outputs .DIFF_DOCUMENTS
44
45
uses : actions/checkout@v4
45
46
with :
46
47
ref : ${{ github.event.pull_request.head.sha }}
47
48
path : pr_head
48
49
49
50
- name : Get changed content from HEAD
50
- if : env .DIFF_DOCUMENTS
51
+ if : steps.check.outputs .DIFF_DOCUMENTS
51
52
run : |
52
53
git config --global user.email "[email protected] "
53
54
git config --global user.name "mdn-bot"
@@ -63,21 +64,24 @@ jobs:
63
64
git commit -m "Code from PR head"
64
65
65
66
- name : Setup Node.js environment
66
- if : env .DIFF_DOCUMENTS
67
+ if : steps.check.outputs .DIFF_DOCUMENTS
67
68
uses : actions/setup-node@v4
68
69
with :
69
70
node-version-file : " .nvmrc"
70
71
cache : yarn
71
72
72
73
- name : Install all yarn packages
73
- if : env .DIFF_DOCUMENTS
74
+ if : steps.check.outputs .DIFF_DOCUMENTS
74
75
run : yarn --frozen-lockfile
75
76
env :
76
77
# https://github.com/microsoft/vscode-ripgrep#github-api-limit-note
77
78
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
78
79
79
80
- name : Lint and format markdown files
80
- if : env.DIFF_DOCUMENTS
81
+ id : lint
82
+ if : steps.check.outputs.DIFF_DOCUMENTS
83
+ env :
84
+ DIFF_DOCUMENTS : ${{ steps.check.outputs.DIFF_DOCUMENTS }}
81
85
run : |
82
86
# Generate random delimiter
83
87
# https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings
@@ -88,38 +92,38 @@ jobs:
88
92
echo "crlf line ending check"
89
93
CRLF_FAILED=true
90
94
CRLF_LOG=$(git ls-files --eol ${files_to_lint} | grep -E 'w/(mixed|crlf)') || CRLF_FAILED=false
91
- echo "CRLF_LOG<<${EOF}" >> $GITHUB_ENV
92
- echo "${CRLF_LOG}" >> $GITHUB_ENV
93
- echo "${EOF}" >> $GITHUB_ENV
94
- echo "CRLF_FAILED=${CRLF_FAILED}" >> $GITHUB_ENV
95
+ echo "CRLF_LOG<<${EOF}" >> "$GITHUB_OUTPUT"
96
+ echo "${CRLF_LOG}" >> "$GITHUB_OUTPUT"
97
+ echo "${EOF}" >> "$GITHUB_OUTPUT"
98
+ echo "CRLF_FAILED=${CRLF_FAILED}" >> "$GITHUB_OUTPUT"
95
99
96
100
echo "Running markdownlint --fix"
97
101
MD_LINT_FAILED=false
98
102
MD_LINT_LOG=$(yarn markdownlint-cli2 --fix ${files_to_lint} 2>&1) || MD_LINT_FAILED=true
99
- echo "MD_LINT_LOG<<${EOF}" >> $GITHUB_ENV
100
- echo "${MD_LINT_LOG}" >> $GITHUB_ENV
101
- echo "${EOF}" >> $GITHUB_ENV
102
- echo "MD_LINT_FAILED=${MD_LINT_FAILED}" >> $GITHUB_ENV
103
+ echo "MD_LINT_LOG<<${EOF}" >> "$GITHUB_OUTPUT"
104
+ echo "${MD_LINT_LOG}" >> "$GITHUB_OUTPUT"
105
+ echo "${EOF}" >> "$GITHUB_OUTPUT"
106
+ echo "MD_LINT_FAILED=${MD_LINT_FAILED}" >> "$GITHUB_OUTPUT"
103
107
104
108
echo "Linting front-matter"
105
109
FM_LINT_FAILED=false
106
110
FM_LINT_LOG=$(node scripts/front-matter_linter.js --fix true ${files_to_lint} 2>&1) || FM_LINT_FAILED=true
107
- echo "FM_LINT_LOG<<${EOF}" >> $GITHUB_ENV
108
- echo "${FM_LINT_LOG}" >> $GITHUB_ENV
109
- echo "${EOF}" >> $GITHUB_ENV
110
- echo "FM_LINT_FAILED=${FM_LINT_FAILED}" >> $GITHUB_ENV
111
+ echo "FM_LINT_LOG<<${EOF}" >> "$GITHUB_OUTPUT"
112
+ echo "${FM_LINT_LOG}" >> "$GITHUB_OUTPUT"
113
+ echo "${EOF}" >> "$GITHUB_OUTPUT"
114
+ echo "FM_LINT_FAILED=${FM_LINT_FAILED}" >> "$GITHUB_OUTPUT"
111
115
112
116
echo "Running Prettier"
113
117
PRETTIER_FAILED=false
114
118
PRETTIER_LOG=$(yarn prettier --check ${files_to_lint} 2>&1) || PRETTIER_FAILED=true
115
- echo "PRETTIER_LOG<<${EOF}" >> $GITHUB_ENV
116
- echo "${PRETTIER_LOG}" >> $GITHUB_ENV
117
- echo "${EOF}" >> $GITHUB_ENV
118
- echo "PRETTIER_FAILED=${PRETTIER_FAILED}" >> $GITHUB_ENV
119
+ echo "PRETTIER_LOG<<${EOF}" >> "$GITHUB_OUTPUT"
120
+ echo "${PRETTIER_LOG}" >> "$GITHUB_OUTPUT"
121
+ echo "${EOF}" >> "$GITHUB_OUTPUT"
122
+ echo "PRETTIER_FAILED=${PRETTIER_FAILED}" >> "$GITHUB_OUTPUT"
119
123
yarn prettier -w ${files_to_lint}
120
124
121
125
if [[ -n $(git diff) ]]; then
122
- echo "FILES_MODIFIED=true" >> $GITHUB_ENV
126
+ echo "FILES_MODIFIED=true" >> "$GITHUB_OUTPUT"
123
127
fi
124
128
125
129
# info for troubleshooting
@@ -130,13 +134,13 @@ jobs:
130
134
git diff
131
135
132
136
- name : Setup reviewdog
133
- if : env. FILES_MODIFIED == 'true' || env .MD_LINT_FAILED == 'true'
137
+ if : steps.lint.outputs. FILES_MODIFIED == 'true' || steps.lint.outputs .MD_LINT_FAILED == 'true'
134
138
uses : reviewdog/action-setup@e04ffabe3898a0af8d0fb1af00c188831c4b5893 # v1.3.2
135
139
with :
136
140
reviewdog_version : latest
137
141
138
142
- name : Suggest changes using diff
139
- if : env .FILES_MODIFIED == 'true'
143
+ if : steps.lint.outputs .FILES_MODIFIED == 'true'
140
144
env :
141
145
REVIEWDOG_GITHUB_API_TOKEN : ${{ secrets.GITHUB_TOKEN }}
142
146
run : |
@@ -151,8 +155,9 @@ jobs:
151
155
-reporter=github-pr-review < "${TMPFILE}"
152
156
153
157
- name : Add reviews for markdownlint errors
154
- if : env .MD_LINT_FAILED == 'true'
158
+ if : steps.lint.outputs .MD_LINT_FAILED == 'true'
155
159
env :
160
+ MD_LINT_LOG : ${{ steps.lint.outputs.MD_LINT_LOG }}
156
161
REVIEWDOG_GITHUB_API_TOKEN : ${{ secrets.GITHUB_TOKEN }}
157
162
run : |
158
163
echo "${MD_LINT_LOG}" | \
@@ -164,16 +169,16 @@ jobs:
164
169
-reporter="github-pr-review"
165
170
166
171
- name : Fail if any issues pending
167
- if : env. FILES_MODIFIED == 'true' || env. CRLF_FAILED == 'true' || env. MD_LINT_FAILED == 'true' || env .FM_LINT_FAILED == 'true'
172
+ if : steps.lint.outputs. FILES_MODIFIED == 'true' || steps.lint.outputs. CRLF_FAILED == 'true' || steps.lint.outputs. MD_LINT_FAILED == 'true' || steps.lint.outputs .FM_LINT_FAILED == 'true'
168
173
env :
169
- CRLF_FAILED : ${{ env .CRLF_FAILED }}
170
- MD_LINT_FAILED : ${{ env .MD_LINT_FAILED }}
171
- FM_LINT_FAILED : ${{ env .FM_LINT_FAILED }}
172
- PRETTIER_FAILED : ${{ env .PRETTIER_FAILED }}
173
- CRLF_LOG : ${{ env .CRLF_LOG }}
174
- MD_LINT_LOG : ${{ env .MD_LINT_LOG }}
175
- FM_LINT_LOG : ${{ env .FM_LINT_LOG }}
176
- PRETTIER_LOG : ${{ env .PRETTIER_LOG }}
174
+ CRLF_FAILED : ${{ steps.lint.outputs .CRLF_FAILED }}
175
+ MD_LINT_FAILED : ${{ steps.lint.outputs .MD_LINT_FAILED }}
176
+ FM_LINT_FAILED : ${{ steps.lint.outputs .FM_LINT_FAILED }}
177
+ PRETTIER_FAILED : ${{ steps.lint.outputs .PRETTIER_FAILED }}
178
+ CRLF_LOG : ${{ steps.lint.outputs .CRLF_LOG }}
179
+ MD_LINT_LOG : ${{ steps.lint.outputs .MD_LINT_LOG }}
180
+ FM_LINT_LOG : ${{ steps.lint.outputs .FM_LINT_LOG }}
181
+ PRETTIER_LOG : ${{ steps.lint.outputs .PRETTIER_LOG }}
177
182
run : |
178
183
echo -e "\nPlease fix all the linting issues mentioned in the following logs and in the PR review comments."
179
184
0 commit comments