From a5509f4be75f556f285463c549379a8ab57037ae Mon Sep 17 00:00:00 2001 From: Rafael Tonholo Date: Thu, 9 Apr 2026 10:48:40 -0300 Subject: [PATCH 1/5] feat(merged-prs-report): extract feature-flag from PR's body --- scripts/merged-pr-report.sh | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/scripts/merged-pr-report.sh b/scripts/merged-pr-report.sh index f0066e58a9a..7b76ce73323 100755 --- a/scripts/merged-pr-report.sh +++ b/scripts/merged-pr-report.sh @@ -207,6 +207,15 @@ escape_csv() { printf '"%s"' "$value" } +fn_fetch_feature_fag() { + feature_flag=$( + jq -nr \ + --arg body "$1" \ + 'try ($body | gsub("\r"; "") | capture("(?m)^feature-flag:\\s*`(?[^`]+)`$").flag) catch ""' + ) + echo "$feature_flag" +} + { echo "# Merged PR Report (${YEAR}-${MONTH})" echo @@ -222,21 +231,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 @@ -251,6 +260,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) catch "" // "-"' \ + <<< "$pr")" if [[ "$SKIP_EXCLUDED" == "true" && "$status" == "Exclude" ]]; then continue @@ -273,15 +285,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")" \ From 5bb977036ceda6774202d411f79daadf454258d0 Mon Sep 17 00:00:00 2001 From: Rafael Tonholo Date: Thu, 9 Apr 2026 10:49:12 -0300 Subject: [PATCH 2/5] chore(merged-prs-report): add indent_size for sh files --- .editorconfig | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.editorconfig b/.editorconfig index a44e1c50759..3eca60b157c 100644 --- a/.editorconfig +++ b/.editorconfig @@ -23,3 +23,6 @@ ij_continuation_indent_size = 2 [*.md] trim_trailing_whitespace = false + +[*.sh] +indent_size = 2 From 0f7fe581f1a19de9688e79a11842cab2abf9693c Mon Sep 17 00:00:00 2001 From: Rafael Tonholo Date: Thu, 9 Apr 2026 10:50:01 -0300 Subject: [PATCH 3/5] chore(merged-prs-report): ignore generated merge pr reports --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 467acf470d9..ac327fc782d 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,7 @@ captures/ adb-screenshots/ # Extracted eml files eml-files/ + +# Merged PRs report +merged-prs-*.md +merged-prs-*.csv From afb5ae9ed2e7e76b6c05000ee9e20b153687ce76 Mon Sep 17 00:00:00 2001 From: Rafael Tonholo Date: Thu, 9 Apr 2026 11:02:03 -0300 Subject: [PATCH 4/5] feat(pr-workflow): validate feature flag key format in PR body when feature flag label is present --- .github/workflows/pr-request-report-labels.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/pr-request-report-labels.yml b/.github/workflows/pr-request-report-labels.yml index 9224225ba14..9adeefc4ffc 100644 --- a/.github/workflows/pr-request-report-labels.yml +++ b/.github/workflows/pr-request-report-labels.yml @@ -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) 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: \\\`\\\`\`." >> "$GITHUB_OUTPUT" + else + echo "valid=true" >> "$GITHUB_OUTPUT" + fi else echo "valid=true" >> "$GITHUB_OUTPUT" fi From f16794be7cb6c6bdee41016f017461ddc65e047e Mon Sep 17 00:00:00 2001 From: Rafael Tonholo Date: Mon, 13 Apr 2026 10:55:53 -0300 Subject: [PATCH 5/5] chore(pr-workflow): remove left-over function --- scripts/merged-pr-report.sh | 9 --------- 1 file changed, 9 deletions(-) diff --git a/scripts/merged-pr-report.sh b/scripts/merged-pr-report.sh index 7b76ce73323..675e8960c41 100755 --- a/scripts/merged-pr-report.sh +++ b/scripts/merged-pr-report.sh @@ -207,15 +207,6 @@ escape_csv() { printf '"%s"' "$value" } -fn_fetch_feature_fag() { - feature_flag=$( - jq -nr \ - --arg body "$1" \ - 'try ($body | gsub("\r"; "") | capture("(?m)^feature-flag:\\s*`(?[^`]+)`$").flag) catch ""' - ) - echo "$feature_flag" -} - { echo "# Merged PR Report (${YEAR}-${MONTH})" echo