Skip to content

Commit 09de175

Browse files
authored
Updating sync-project-board.sh to also add PRs to a specified project (#244)
Signed-off-by: Mark Rossetti <[email protected]> Signed-off-by: Mark Rossetti <[email protected]>
1 parent ae99174 commit 09de175

File tree

1 file changed

+56
-9
lines changed

1 file changed

+56
-9
lines changed

hack/sync-project-board.sh

Lines changed: 56 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,28 @@ set -o pipefail
1919
## - project (all)
2020

2121
GH_ORG=${GH_ORG:-'kubernetes'}
22-
PROJECT_NUMBER=${PROJECT_NUMBER:-'82'}
22+
ISSUES_PROJECT_NUMBER=${ISSUES_PROJECT_NUMBER:-'82'}
23+
PRS_PROJECT_NUMBER=${PRS_PROJECT_NUMBER:-'99'}
2324

2425
echo "GH_ORG=${GH_ORG}"
2526

26-
# Get project ID
27-
project_id="$(gh api graphql -f query='
27+
function get_project_id_from_number() {
28+
project_id="$(gh api graphql -f query='
2829
query($org: String!, $number: Int!) {
2930
organization(login: $org) {
3031
projectV2(number: $number) {
3132
id
3233
}
3334
}
34-
}' -f org=${GH_ORG} -F number=${PROJECT_NUMBER} --jq '.data.organization.projectV2.id')"
35-
echo "project id: ${project_id}"
35+
}' -f org="${GH_ORG}" -F number="$1" --jq '.data.organization.projectV2.id')"
36+
echo "$project_id"
37+
}
38+
39+
# Get project ID
40+
issues_project_id=$( get_project_id_from_number "$ISSUES_PROJECT_NUMBER" )
41+
echo "project id for issues (number $ISSUES_PROJECT_NUMBER): ${issues_project_id}"
42+
prs_project_id=$( get_project_id_from_number "$PRS_PROJECT_NUMBER" )
43+
echo "project id for prs (number $PRS_PROJECT_NUMBER): ${prs_project_id}"
3644

3745
# Get list of repos in the org
3846
repos_json="$(gh api graphql --paginate -f query='
@@ -50,7 +58,7 @@ repos_json="$(gh api graphql --paginate -f query='
5058
}
5159
}
5260
}
53-
}' -f org=${GH_ORG})"
61+
}' -f org="${GH_ORG}")"
5462

5563
repos="$(jq ".data.viewer.organization.repositories.nodes[].name" <<< "$repos_json" | tr -d '"' )"
5664

@@ -71,12 +79,12 @@ do
7179
}
7280
}
7381
}
74-
}' -f org=${GH_ORG} -f repo=${repo})"
82+
}' -f org="${GH_ORG}" -f repo="${repo}")"
7583

7684
num_issues=$(jq ".data.repository.issues.nodes | length" <<< "$issues_json")
7785
echo " found ${num_issues} in repo"
7886

79-
if [ $num_issues -gt 0 ]; then
87+
if [ "$num_issues" -gt 0 ]; then
8088
range=$((num_issues - 1))
8189
for i in $(seq 0 $range)
8290
do
@@ -92,7 +100,46 @@ do
92100
id
93101
}
94102
}
95-
}' -f project=${project_id} -f issue="${issue_id}" --jq .data.addProjectV2ItemById.item.id > /dev/null
103+
}' -f project="${issues_project_id}" -f issue="${issue_id}" --jq .data.addProjectV2ItemById.item.id > /dev/null
104+
done
105+
fi
106+
107+
echo "Looking for PRs in ${GH_ORG}/${repo}"
108+
# TODO: paginate this query
109+
prs_json="$(gh api graphql -f query='
110+
query($org: String!, $repo: String!) {
111+
repository(owner: $org, name: $repo) {
112+
pullRequests(last: 100, labels: ["sig/Windows"], states: OPEN) {
113+
totalCount
114+
nodes {
115+
id
116+
number
117+
title
118+
}
119+
}
120+
}
121+
}' -f org="${GH_ORG}" -f repo="${repo}")"
122+
123+
num_prs=$(jq ".data.repository.pullRequests.nodes | length" <<< "$prs_json")
124+
echo " found ${num_prs} in repo"
125+
126+
if [ "$num_prs" -gt 0 ]; then
127+
range=$((num_prs - 1))
128+
for i in $(seq 0 $range)
129+
do
130+
pr_id=$(jq ".data.repository.pullRequests.nodes[$i].id" <<< "$prs_json")
131+
pr_title=$(jq ".data.repository.pullRequests.nodes[$i].title" <<< "$prs_json")
132+
pr_number=$(jq ".data.repository.pullRequests.nodes[$i].number" <<< "$prs_json")
133+
echo " adding ${pr_number} - ${pr_title}"
134+
135+
gh api graphql -f query='
136+
mutation($project:ID!, $pr:ID!) {
137+
addProjectV2ItemById(input: {projectId: $project, contentId: $pr}) {
138+
item {
139+
id
140+
}
141+
}
142+
}' -f project="${prs_project_id}" -f pr="${pr_id}" --jq .data.addProjectV2ItemById.item.id > /dev/null
96143
done
97144
fi
98145
done

0 commit comments

Comments
 (0)