Skip to content

Commit

Permalink
Adding linked issues.yml
Browse files Browse the repository at this point in the history
  • Loading branch information
n2020h authored Aug 26, 2024
1 parent 06265c4 commit 635d295
Showing 1 changed file with 38 additions and 39 deletions.
77 changes: 38 additions & 39 deletions .github/workflows/pull_requests_to_csv.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,46 +77,45 @@ jobs:
# $linked_issues
# ] | @csv' pulls.json >> pull_requests.csv
# done

# Generate pull requests CSV including linked issues and has_issues field
- name: Generate pull requests CSV including linked issues and has_issues
run: |
echo "PR Number,Title,Description,Author,State,Number of Commits,Number of Files Changed,Labels,Assignees,Reviewers,Linked Issues,Has Issues" > pull_requests.csv
for pr_number in $(jq -r '.[].number' pulls.json); do
timeline_file="timeline_$pr_number.json"
# Extract linked issues from timeline, body, reactions, and issue_url
linked_issues_timeline=$(jq -r '[.[] | select(.event == "cross-referenced" and .source.issue) | .source.issue.url | capture("/(?<issue_number>\\d+)$").issue_number] | join(", ")' "$timeline_file")
linked_issues_body=$(jq -r '.body | capture_all("#(?<number>\\d+)"; "g") | join(",")' pulls.json)
- name: Generate pull requests CSV including linked issues and has_issues
run: |
echo "PR Number,Title,Description,Author,State,Number of Commits,Number of Files Changed,Labels,Assignees,Reviewers,Linked Issues,Has Issues" > pull_requests.csv
linked_issues_reactions=$(jq -r '.reactions.url | capture("/issues/(?<issue_number>\\d+)/reactions").issue_number' pulls.json)
linked_issues_direct=$(jq -r '.issue_url | capture("/issues/(?<issue_number>\\d+)$").issue_number' pulls.json)
# Combine all extracted issue numbers
linked_issues=$(echo "$linked_issues_timeline, $linked_issues_body, $linked_issues_reactions, $linked_issues_direct" | sed 's/^, //; s/, $//; s/,,/,/g')
# Extract has_issues field
has_issues=$(jq -r '.repository.has_issues' pulls.json)
jq -r --arg linked_issues "$linked_issues" --arg has_issues "$has_issues" \
'.[] | select(.number == '$pr_number') | [
.number,
.title,
.body,
.user.login,
.state,
.commits,
.changed_files,
(.labels | map(.name) | join(",")),
(.assignees | map(.login) | join(",")),
(.requested_reviewers | map(.login) | join(",")),
$linked_issues,
$has_issues
] | @csv' pulls.json >> pull_requests.csv
done
for pr_number in $(jq -r '.[].number' pulls.json); do
timeline_file="timeline_$pr_number.json"
if [ -f "$timeline_file" ]; then
linked_issues_timeline=$(jq -r '[.[] | select(.event == "cross-referenced" and .source.issue) | .source.issue.url | capture("/(?<issue_number>\\d+)$").issue_number] | join(", ")' "$timeline_file")
else
linked_issues_timeline=""
fi
linked_issues_body=$(jq -r '.[] | select(.number == '$pr_number') | .body | capture_all("#(?<number>\\d+)"; "g") | join(",")' pulls.json || echo "")
linked_issues_reactions=$(jq -r '.[] | select(.number == '$pr_number') | .reactions.url | capture("/issues/(?<issue_number>\\d+)/reactions").issue_number' pulls.json || echo "")
linked_issues_direct=$(jq -r '.[] | select(.number == '$pr_number') | .issue_url | capture("/issues/(?<issue_number>\\d+)$").issue_number' pulls.json || echo "")
linked_issues=$(echo "$linked_issues_timeline, $linked_issues_body, $linked_issues_reactions, $linked_issues_direct" | sed 's/^, //; s/, $//; s/,,/,/g')
has_issues=$(jq -r '.repository.has_issues' pulls.json || echo "false")
jq -r --arg linked_issues "$linked_issues" --arg has_issues "$has_issues" \
'.[] | select(.number == '$pr_number') | [
.number,
.title,
.body,
.user.login,
.state,
.commits,
.changed_files,
(.labels | map(.name) | join(",")),
(.assignees | map(.login) | join(",")),
(.requested_reviewers | map(.login) | join(",")),
$linked_issues,
$has_issues
] | @csv' pulls.json >> pull_requests.csv
done
# Check the content of pull_requests.csv for debugging
- name: Display pull_requests.csv content
Expand Down

0 comments on commit 635d295

Please sign in to comment.