@@ -77,46 +77,45 @@ jobs:
77
77
# $linked_issues
78
78
# ] | @csv' pulls.json >> pull_requests.csv
79
79
# 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
93
83
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
120
119
121
120
# Check the content of pull_requests.csv for debugging
122
121
- name : Display pull_requests.csv content
0 commit comments