diff --git a/.github/workflows/close-issue.yml b/.github/workflows/close-issue.yml new file mode 100644 index 0000000..094d6df --- /dev/null +++ b/.github/workflows/close-issue.yml @@ -0,0 +1,78 @@ +name: Update issue Status + +on: + issues: + types: [closed] + +jobs: + update_issue: + runs-on: ubuntu-latest + steps: + - name: Get project data + env: + GITHUB_TOKEN: ${{secrets.GHPROJECT_TOKEN}} + ORGANIZATION: specklesystems + PROJECT_NUMBER: 9 + run: | + gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query=' + query($org: String!, $number: Int!) { + organization(login: $org){ + projectNext(number: $number) { + id + fields(first:20) { + nodes { + id + name + settings + } + } + } + } + }' -f org=$ORGANIZATION -F number=$PROJECT_NUMBER > project_data.json + + echo 'PROJECT_ID='$(jq '.data.organization.projectNext.id' project_data.json) >> $GITHUB_ENV + echo 'STATUS_FIELD_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") | .id' project_data.json) >> $GITHUB_ENV + + echo "$PROJECT_ID" + echo "$STATUS_FIELD_ID" + + echo 'DONE_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") | .settings | fromjson | .options[] | select(.name== "Done") | .id' project_data.json) >> $GITHUB_ENV + echo "$DONE_ID" + + - name: Add Issue to project #it's already in the project, but we do this to get its node id! + env: + GITHUB_TOKEN: ${{secrets.GHPROJECT_TOKEN}} + ISSUE_ID: ${{ github.event.issue.node_id }} + run: | + item_id="$( gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query=' + mutation($project:ID!, $id:ID!) { + addProjectNextItem(input: {projectId: $project, contentId: $id}) { + projectNextItem { + id + } + } + }' -f project=$PROJECT_ID -f id=$ISSUE_ID --jq '.data.addProjectNextItem.projectNextItem.id')" + + echo 'ITEM_ID='$item_id >> $GITHUB_ENV + + - name: Update Status + env: + GITHUB_TOKEN: ${{secrets.GHPROJECT_TOKEN}} + ISSUE_ID: ${{ github.event.issue.node_id }} + run: | + gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query=' + mutation($project:ID!, $status:ID!, $id:ID!, $value:String!) { + set_status: updateProjectNextItemField( + input: { + projectId: $project + itemId: $id + fieldId: $status + value: $value + } + ) { + projectNextItem { + id + } + } + }' -f project=$PROJECT_ID -f status=$STATUS_FIELD_ID -f id=$ITEM_ID -f value=${{ env.DONE_ID }} +