Skip to content

Commit 635d295

Browse files
authored
Adding linked issues.yml
1 parent 06265c4 commit 635d295

File tree

1 file changed

+38
-39
lines changed

1 file changed

+38
-39
lines changed

.github/workflows/pull_requests_to_csv.yml

Lines changed: 38 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -77,46 +77,45 @@ jobs:
7777
# $linked_issues
7878
# ] | @csv' pulls.json >> pull_requests.csv
7979
# done
80-
81-
# Generate pull requests CSV including linked issues and has_issues field
82-
- name: Generate pull requests CSV including linked issues and has_issues
83-
run: |
84-
echo "PR Number,Title,Description,Author,State,Number of Commits,Number of Files Changed,Labels,Assignees,Reviewers,Linked Issues,Has Issues" > pull_requests.csv
85-
86-
for pr_number in $(jq -r '.[].number' pulls.json); do
87-
timeline_file="timeline_$pr_number.json"
88-
89-
# Extract linked issues from timeline, body, reactions, and issue_url
90-
linked_issues_timeline=$(jq -r '[.[] | select(.event == "cross-referenced" and .source.issue) | .source.issue.url | capture("/(?<issue_number>\\d+)$").issue_number] | join(", ")' "$timeline_file")
91-
92-
linked_issues_body=$(jq -r '.body | capture_all("#(?<number>\\d+)"; "g") | join(",")' pulls.json)
80+
- name: Generate pull requests CSV including linked issues and has_issues
81+
run: |
82+
echo "PR Number,Title,Description,Author,State,Number of Commits,Number of Files Changed,Labels,Assignees,Reviewers,Linked Issues,Has Issues" > pull_requests.csv
9383
94-
linked_issues_reactions=$(jq -r '.reactions.url | capture("/issues/(?<issue_number>\\d+)/reactions").issue_number' pulls.json)
95-
96-
linked_issues_direct=$(jq -r '.issue_url | capture("/issues/(?<issue_number>\\d+)$").issue_number' pulls.json)
97-
98-
# Combine all extracted issue numbers
99-
linked_issues=$(echo "$linked_issues_timeline, $linked_issues_body, $linked_issues_reactions, $linked_issues_direct" | sed 's/^, //; s/, $//; s/,,/,/g')
100-
101-
# Extract has_issues field
102-
has_issues=$(jq -r '.repository.has_issues' pulls.json)
103-
104-
jq -r --arg linked_issues "$linked_issues" --arg has_issues "$has_issues" \
105-
'.[] | select(.number == '$pr_number') | [
106-
.number,
107-
.title,
108-
.body,
109-
.user.login,
110-
.state,
111-
.commits,
112-
.changed_files,
113-
(.labels | map(.name) | join(",")),
114-
(.assignees | map(.login) | join(",")),
115-
(.requested_reviewers | map(.login) | join(",")),
116-
$linked_issues,
117-
$has_issues
118-
] | @csv' pulls.json >> pull_requests.csv
119-
done
84+
for pr_number in $(jq -r '.[].number' pulls.json); do
85+
timeline_file="timeline_$pr_number.json"
86+
87+
if [ -f "$timeline_file" ]; then
88+
linked_issues_timeline=$(jq -r '[.[] | select(.event == "cross-referenced" and .source.issue) | .source.issue.url | capture("/(?<issue_number>\\d+)$").issue_number] | join(", ")' "$timeline_file")
89+
else
90+
linked_issues_timeline=""
91+
fi
92+
93+
linked_issues_body=$(jq -r '.[] | select(.number == '$pr_number') | .body | capture_all("#(?<number>\\d+)"; "g") | join(",")' pulls.json || echo "")
94+
95+
linked_issues_reactions=$(jq -r '.[] | select(.number == '$pr_number') | .reactions.url | capture("/issues/(?<issue_number>\\d+)/reactions").issue_number' pulls.json || echo "")
96+
97+
linked_issues_direct=$(jq -r '.[] | select(.number == '$pr_number') | .issue_url | capture("/issues/(?<issue_number>\\d+)$").issue_number' pulls.json || echo "")
98+
99+
linked_issues=$(echo "$linked_issues_timeline, $linked_issues_body, $linked_issues_reactions, $linked_issues_direct" | sed 's/^, //; s/, $//; s/,,/,/g')
100+
101+
has_issues=$(jq -r '.repository.has_issues' pulls.json || echo "false")
102+
103+
jq -r --arg linked_issues "$linked_issues" --arg has_issues "$has_issues" \
104+
'.[] | select(.number == '$pr_number') | [
105+
.number,
106+
.title,
107+
.body,
108+
.user.login,
109+
.state,
110+
.commits,
111+
.changed_files,
112+
(.labels | map(.name) | join(",")),
113+
(.assignees | map(.login) | join(",")),
114+
(.requested_reviewers | map(.login) | join(",")),
115+
$linked_issues,
116+
$has_issues
117+
] | @csv' pulls.json >> pull_requests.csv
118+
done
120119
121120
# Check the content of pull_requests.csv for debugging
122121
- name: Display pull_requests.csv content

0 commit comments

Comments
 (0)