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
2 changes: 1 addition & 1 deletion .github/workflows/test-update-rule-metadata.yml
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ jobs:
fi

# Test that PR creation uses the branch input for base
if grep -A20 "peter-evans/create-pull-request" update-rule-metadata/action.yml | grep -q "base.*inputs.branch"; then
if grep -A20 "create-pull-request" update-rule-metadata/action.yml | grep -q "base.*inputs.branch"; then
echo "✓ PR creation uses branch input for base"
else
echo "✗ PR creation does not use branch input for base"
Expand Down
44 changes: 26 additions & 18 deletions update-rule-metadata/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -161,43 +161,51 @@ runs:
shell: bash
run: |
rm rule-api.jar

- name: Generate summary
id: generate-summary
shell: bash
run: |
summary=""
summary_file="rule-api-summary.md"
current_sonarpedia=""
has_entries=false
total_rules=0

# Build a markdown table
echo "| Sonarpedia | Rules to update |" > "$summary_file"
echo "|---|---:|" >> "$summary_file"

while IFS= read -r line; do
if [[ $line == "=== "* ]]; then
current_sonarpedia=$(echo "$line" | sed 's/=== \(.*\) ===/\1/')
elif [[ $line == *"Found "* && $line == *" rule(s) to update"* ]]; then
rule_count=$(echo "$line" | grep -o 'Found [0-9]\+' | grep -o '[0-9]\+')
if [[ -n "$rule_count" && "$rule_count" != "0" && -n "$current_sonarpedia" ]]; then
if [[ -n "$summary" ]]; then
summary="${summary},\n"
fi
summary="${summary} ${rule_count} rules for ${current_sonarpedia}"
echo "| \`${current_sonarpedia}\` | ${rule_count} |" >> "$summary_file"
total_rules=$((total_rules + rule_count))
has_entries=true
fi
fi
done < rule-api-logs.txt

if [[ -z "$summary" ]]; then
summary="Update rule metadata"
if [[ "$has_entries" == "true" ]]; then
echo "| **Total** | **${total_rules}** |" >> "$summary_file"
fi

# Write summary to output using delimiter to preserve newlines
if [[ "$has_entries" == "false" ]]; then
echo "summary=Update rule metadata" >> $GITHUB_OUTPUT
else
summary="Check rule metadata for:\n ${summary}"
{
echo "summary<<EOF"
cat "$summary_file"
echo "EOF"
} >> $GITHUB_OUTPUT
fi

echo "summary=${summary}" >> $GITHUB_OUTPUT
rm rule-api-logs.txt
rm -f "$summary_file"

- name: Prepare summary for PR
id: pr-summary
shell: bash
run: |
echo "summary=${{ steps.generate-summary.outputs.summary }}" | sed ':a;N;$!ba;s/\n/<br>/g' >> $GITHUB_OUTPUT

- name: Check Rule Metadata Changes
id: check-changes
shell: bash
Expand All @@ -221,14 +229,14 @@ runs:
- name: Create PR
if: ${{ steps.check-changes.outputs.has-changes == 'true' }}
id: create-pr
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
uses: SonarSource/release-github-actions/create-pull-request@v1
with:
commit-message: Update rule metadata
title: Update rule metadata
body: |
## Rule Metadata Update Summary

${{ steps.pr-summary.outputs.summary }}
${{ steps.generate-summary.outputs.summary }}

This PR was automatically generated to update rule metadata across all supported languages.
base: ${{ inputs.branch }}
Expand Down
Loading