Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,6 @@ ij_continuation_indent_size = 2

[*.md]
trim_trailing_whitespace = false

[*.sh]
indent_size = 2
12 changes: 12 additions & 0 deletions .github/workflows/pr-request-report-labels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,18 @@ jobs:
elif [ "$total_count" -gt 1 ]; then
echo "valid=false" >> "$GITHUB_OUTPUT"
echo "message=Only one report label is allowed: \`report: include\`, \`report: exclude\` OR \`report: highlight\`." >> "$GITHUB_OUTPUT"
fi

feature_flag_count="$(jq '[.[] | select(.name == "feature flag")] | length' <<< "$labels_json")"
if [ "$feature_flag_count" -gt 0 ]; then
pr_body='${{ toJson(github.event.pull_request.body) }}'
pr_feature_flag_key="$(jq -nr --arg body "$pr_body" 'try ($body | gsub("\r"; "") | capture("(?m)^feature-flag:\\s*`(?<flag>[^`]+)`$").flag) catch ""')"
if [ -z "$pr_feature_flag_key" ]; then
echo "valid=false" >> "$GITHUB_OUTPUT"
echo "message=PR body must contain the feature flag key in the format: \`feature-flag: \\\`<feature-flag-key>\\\`\`." >> "$GITHUB_OUTPUT"
else
echo "valid=true" >> "$GITHUB_OUTPUT"
fi
else
echo "valid=true" >> "$GITHUB_OUTPUT"
fi
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,7 @@ captures/
adb-screenshots/
# Extracted eml files
eml-files/

# Merged PRs report
merged-prs-*.md
merged-prs-*.csv
16 changes: 10 additions & 6 deletions scripts/merged-pr-report.sh
Original file line number Diff line number Diff line change
Expand Up @@ -222,21 +222,21 @@ for BRANCH in "${BRANCHES[@]}"; do

echo "## Branch: $BRANCH" >> "$MD_OUT"
echo >> "$MD_OUT"
echo "| PR | Merged | Title | Report | Beta | Release |" >> "$MD_OUT"
echo "|---|---|---|---|---|---|" >> "$MD_OUT"
echo "| PR | Merged | Title | Report | Feature Flag | Beta | Release |" >> "$MD_OUT"
echo "|---|---|---|---|---|---|---|" >> "$MD_OUT"

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

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

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

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

echo "| [#$number]($url) | $merged_at | $title_md | $status | $beta_version | $release_version |" >> "$MD_OUT"
echo "| [#$number]($url) | $merged_at | $title_md | $status | $feature_flag | $beta_version | $release_version |" >> "$MD_OUT"

printf '%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n' \
printf '%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n' \
"$(escape_csv "$BRANCH")" \
"$(escape_csv "$number")" \
"$(escape_csv "$merged_at")" \
"$(escape_csv "$author")" \
"$(escape_csv "$title")" \
"$(escape_csv "$status")" \
"$(escape_csv "$feature_flag")" \
"$(escape_csv "$beta_version")" \
"$(escape_csv "$release_version")" \
"$(escape_csv "$sha")" \
Expand Down
Loading