Skip to content

Commit da35cd0

Browse files
authored
Update pull_requests_to_csv.yml
Null case
1 parent 892a336 commit da35cd0

File tree

1 file changed

+32
-24
lines changed

1 file changed

+32
-24
lines changed

.github/workflows/pull_requests_to_csv.yml

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -33,41 +33,48 @@ jobs:
3333
"https://api.github.com/repos/${{ github.repository }}/pulls?state=all&per_page=100" \
3434
-o pulls.json
3535
36-
# Fetch linked issues for each pull request and save to timeline.json
36+
# Fetch linked issues for each PR
3737
- name: Fetch linked issues for each PR
3838
env:
3939
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4040
run: |
41-
jq -r '.[].number' pulls.json | while read pr; do \
41+
for pr_number in $(jq -r '.[].number' pulls.json); do \
4242
curl -H "Authorization: token $GITHUB_TOKEN" \
4343
-H "Accept: application/vnd.github.v3+json" \
44-
"https://api.github.com/repos/${{ github.repository }}/issues/$pr/timeline?per_page=100" \
45-
-o "timeline_$pr.json"; \
44+
"https://api.github.com/repos/${{ github.repository }}/issues/$pr_number/timeline?per_page=100" \
45+
-o "timeline_$pr_number.json"; \
4646
done
4747
4848
# Generate pull requests CSV including linked issues
49-
- name: Generate pull requests CSV
49+
- name: Generate pull requests CSV including linked issues
5050
run: |
5151
echo "PR Number,Title,Description,Author,State,Number of Commits,Number of Files Changed,Labels,Assignees,Reviewers,Linked Issues" > pull_requests.csv
52-
jq -r '.[] | select(.user.login != "dependabot[bot]") | [
53-
.number,
54-
.title,
55-
.body,
56-
.user.login,
57-
.state,
58-
.commits,
59-
.changed_files,
60-
(.labels | map(.name) | join(",")),
61-
(.assignees | map(.login) | join(",")),
62-
(.requested_reviewers | map(.login) | join(",")),
63-
(if .number as $pr | .body != null then
64-
(input_filename | sub("timeline_";"") | sub(".json";"")) as $pr_number |
65-
(try input | .[] | select(.event == "cross-referenced" and .source.issue) |
66-
.source.issue.number | tostring + ": " + .source.issue.title | join(", "))
67-
else
68-
""
69-
end)
70-
] | @csv' pulls.json timeline_*.json >> pull_requests.csv
52+
53+
for pr_number in $(jq -r '.[].number' pulls.json); do
54+
timeline_file="timeline_$pr_number.json"
55+
56+
# Ensure the timeline file is not empty before processing
57+
if [ -s "$timeline_file" ]; then
58+
linked_issues=$(jq -r '[.[] | select(.event == "cross-referenced" and .source.issue) | .source.issue.number | tostring] | join(", ")' "$timeline_file")
59+
else
60+
linked_issues=""
61+
fi
62+
63+
jq -r --arg linked_issues "$linked_issues" \
64+
'.[] | select(.number == '$pr_number') | [
65+
.number,
66+
.title,
67+
.body,
68+
.user.login,
69+
.state,
70+
.commits,
71+
.changed_files,
72+
(.labels | map(.name) | join(",")),
73+
(.assignees | map(.login) | join(",")),
74+
(.requested_reviewers | map(.login) | join(",")),
75+
$linked_issues
76+
] | @csv' pulls.json >> pull_requests.csv
77+
done
7178
7279
# Check the content of pull_requests.csv for debugging
7380
- name: Display pull_requests.csv content
@@ -85,6 +92,7 @@ jobs:
8592
env:
8693
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
8794

95+
8896
##------------------------------------------##
8997
# name: List Pull Requests and Output as CSV
9098

0 commit comments

Comments
 (0)