Skip to content

Commit 1848a77

Browse files
authored
feat(merge-prs-report): include feature flag information in the merge prs report (#10843)
2 parents 436cc4a + f16794b commit 1848a77

4 files changed

Lines changed: 29 additions & 6 deletions

File tree

.editorconfig

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,6 @@ ij_continuation_indent_size = 2
2424

2525
[*.md]
2626
trim_trailing_whitespace = false
27+
28+
[*.sh]
29+
indent_size = 2

.github/workflows/pr-request-report-labels.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,18 @@ jobs:
4343
elif [ "$total_count" -gt 1 ]; then
4444
echo "valid=false" >> "$GITHUB_OUTPUT"
4545
echo "message=Only one report label is allowed: \`report: include\`, \`report: exclude\` OR \`report: highlight\`." >> "$GITHUB_OUTPUT"
46+
fi
47+
48+
feature_flag_count="$(jq '[.[] | select(.name == "feature flag")] | length' <<< "$labels_json")"
49+
if [ "$feature_flag_count" -gt 0 ]; then
50+
pr_body='${{ toJson(github.event.pull_request.body) }}'
51+
pr_feature_flag_key="$(jq -nr --arg body "$pr_body" 'try ($body | gsub("\r"; "") | capture("(?m)^feature-flag:\\s*`(?<flag>[^`]+)`$").flag) catch ""')"
52+
if [ -z "$pr_feature_flag_key" ]; then
53+
echo "valid=false" >> "$GITHUB_OUTPUT"
54+
echo "message=PR body must contain the feature flag key in the format: \`feature-flag: \\\`<feature-flag-key>\\\`\`." >> "$GITHUB_OUTPUT"
55+
else
56+
echo "valid=true" >> "$GITHUB_OUTPUT"
57+
fi
4658
else
4759
echo "valid=true" >> "$GITHUB_OUTPUT"
4860
fi

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,7 @@ captures/
4848
adb-screenshots/
4949
# Extracted eml files
5050
eml-files/
51+
52+
# Merged PRs report
53+
merged-prs-*.md
54+
merged-prs-*.csv

scripts/merged-pr-report.sh

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -222,21 +222,21 @@ for BRANCH in "${BRANCHES[@]}"; do
222222

223223
echo "## Branch: $BRANCH" >> "$MD_OUT"
224224
echo >> "$MD_OUT"
225-
echo "| PR | Merged | Title | Report | Beta | Release |" >> "$MD_OUT"
226-
echo "|---|---|---|---|---|---|" >> "$MD_OUT"
225+
echo "| PR | Merged | Title | Report | Feature Flag | Beta | Release |" >> "$MD_OUT"
226+
echo "|---|---|---|---|---|---|---|" >> "$MD_OUT"
227227

228228
prs_json="$(gh pr list \
229229
--repo "$OWNER/$REPO" \
230230
--state merged \
231231
--base "$BRANCH" \
232232
--search "merged:$START..$END" \
233-
--json number,title,url,mergedAt,mergeCommit,labels,author \
233+
--json number,title,body,url,mergedAt,mergeCommit,labels,author \
234234
--limit 1000)"
235235

236236
sorted_prs_json="$(jq 'sort_by(.mergedAt)' <<< "$prs_json")"
237237

238238
if [[ "$(jq 'length' <<< "$sorted_prs_json")" -eq 0 ]]; then
239-
echo "| - | - | _No merged PRs in this range._ | - | - | - |" >> "$MD_OUT"
239+
echo "| - | - | - | _No merged PRs in this range._ | - | - | - |" >> "$MD_OUT"
240240
echo >> "$MD_OUT"
241241
continue
242242
fi
@@ -251,6 +251,9 @@ for BRANCH in "${BRANCHES[@]}"; do
251251
author="$(jq -r '.author.login // "ghost"' <<< "$pr")"
252252
labels_json="$(jq -c '.labels // []' <<< "$pr")"
253253
status="$(map_report_status "$labels_json")"
254+
feature_flag="$(jq -r \
255+
'try (.body // "" | gsub("\r"; "") | capture("(?m)^feature-flag:\\s*`(?<flag>[^`]+)`$").flag) catch "" // "-"' \
256+
<<< "$pr")"
254257

255258
if [[ "$SKIP_EXCLUDED" == "true" && "$status" == "Exclude" ]]; then
256259
continue
@@ -273,15 +276,16 @@ for BRANCH in "${BRANCHES[@]}"; do
273276
release_version="-"
274277
fi
275278

276-
echo "| [#$number]($url) | $merged_at | $title_md | $status | $beta_version | $release_version |" >> "$MD_OUT"
279+
echo "| [#$number]($url) | $merged_at | $title_md | $status | $feature_flag | $beta_version | $release_version |" >> "$MD_OUT"
277280

278-
printf '%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n' \
281+
printf '%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n' \
279282
"$(escape_csv "$BRANCH")" \
280283
"$(escape_csv "$number")" \
281284
"$(escape_csv "$merged_at")" \
282285
"$(escape_csv "$author")" \
283286
"$(escape_csv "$title")" \
284287
"$(escape_csv "$status")" \
288+
"$(escape_csv "$feature_flag")" \
285289
"$(escape_csv "$beta_version")" \
286290
"$(escape_csv "$release_version")" \
287291
"$(escape_csv "$sha")" \

0 commit comments

Comments
 (0)