From 87bca14eb5a46584e606c44d97530aa30f5f1359 Mon Sep 17 00:00:00 2001 From: xrkffgg Date: Tue, 12 Jan 2021 17:05:24 +0800 Subject: [PATCH] fix: duplicate labels set (#36) * fix: duplicate labels set * up version * add labels * add * perf map * fix set * add info * avoid setLabels * change for * refactor setLabels * fix * change info loca * fix * fix --- CHANGELOG.md | 6 ++++ README.en-US.md | 53 ++++++++++++++-------------- README.md | 53 ++++++++++++++-------------- USERS.js | 3 -- dist/index.js | 76 +++++++++++++++++++++++++++------------- docs/advanced.en-US.md | 12 +++---- docs/advanced.md | 12 +++---- docs/base.en-US.md | 33 ++++++++--------- docs/base.md | 33 ++++++++--------- docs/index.en-US.md | 2 +- docs/index.md | 2 +- package.json | 2 +- script/update-version.js | 4 +-- src/base.js | 76 +++++++++++++++++++++++++++------------- 14 files changed, 213 insertions(+), 154 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fecbaad..5bfe7d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## v1.10 + +`2021.01.12` + +- fix: duplicate labels set. [#36](https://github.com/actions-cool/issues-helper/pull/36) + ## v1.9 `2021.01.11` diff --git a/README.en-US.md b/README.en-US.md index 2c4097e..f7dbac0 100644 --- a/README.en-US.md +++ b/README.en-US.md @@ -134,7 +134,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Add assigness - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'add-assignees' token: ${{ secrets.GITHUB_TOKEN }} @@ -176,7 +176,7 @@ jobs: if: contains(github.event.issue.body, 'xxx') == false steps: - name: Add labels - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'add-labels' token: ${{ secrets.GITHUB_TOKEN }} @@ -201,7 +201,7 @@ Close the specified issue. ```yml - name: Close issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'close-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -234,7 +234,7 @@ jobs: if: github.event.label.name == 'xxx' steps: - name: Create comment - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'create-comment' token: ${{ secrets.GITHUB_TOKEN }} @@ -278,7 +278,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Create issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'create-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -311,7 +311,7 @@ According to [`comment-id`](#comment-id) delete the specified comment. ```yml - name: Delete comment - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'delete-comment' token: ${{ secrets.GITHUB_TOKEN }} @@ -343,7 +343,7 @@ jobs: if: github.event.label.name == 'invalid' steps: - name: Lock issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'lock-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -374,7 +374,7 @@ jobs: runs-on: ubuntu-latest steps: - name: mark-duplicate - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'mark-duplicate' token: ${{ secrets.GITHUB_TOKEN }} @@ -392,6 +392,7 @@ jobs: | close-issue | Whether to close the issue at the same time | string | ✖ | - `duplicate-command`: When setting concise commands, while still supporting the original `Duplicate of` +- `labels`: Highest priority - `close-issue`: Both `true` or `'true'` can take effect ⏫ [Back to list](#List) @@ -402,7 +403,7 @@ Open the specified issue. ```yml - name: Open issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'open-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -423,7 +424,7 @@ Remove the person designated by issue. ```yml - name: Remove assignees - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'remove-assignees' token: ${{ secrets.GITHUB_TOKEN }} @@ -446,7 +447,7 @@ Remove the specified labels. ```yml - name: Remove labels - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'remove-labels' token: ${{ secrets.GITHUB_TOKEN }} @@ -471,7 +472,7 @@ Replace the labels of issue. ```yml - name: Set labels - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'set-labels' token: ${{ secrets.GITHUB_TOKEN }} @@ -494,7 +495,7 @@ Unlock the specified issue. ```yml - name: Unlock issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'unlock-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -527,7 +528,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Update comment - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'update-comment' token: ${{ secrets.GITHUB_TOKEN }} @@ -555,7 +556,7 @@ Update the specified issue according to the `issue-number`. ```yml - name: Update issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'update-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -605,7 +606,7 @@ jobs: runs-on: ubuntu-latest steps: - name: welcome - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'welcome' token: ${{ secrets.GITHUB_TOKEN }} @@ -648,7 +649,7 @@ jobs: runs-on: ubuntu-latest steps: - name: check-inactive - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'check-inactive' token: ${{ secrets.GITHUB_TOKEN }} @@ -701,7 +702,7 @@ jobs: runs-on: ubuntu-latest steps: - name: check-issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'check-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -740,7 +741,7 @@ jobs: runs-on: ubuntu-latest steps: - name: close-issues - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'close-issues' token: ${{ secrets.GITHUB_TOKEN }} @@ -774,7 +775,7 @@ Find the current warehouse issue No. 1, the creator is k and the content contain ```yml - name: Find comments - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'find-comments' token: ${{ secrets.GITHUB_TOKEN }} @@ -822,7 +823,7 @@ jobs: runs-on: ubuntu-latest steps: - name: lock-issues - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'lock-issues' token: ${{ secrets.GITHUB_TOKEN }} @@ -868,7 +869,7 @@ jobs: runs-on: ubuntu-latest steps: - name: month-statistics - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'month-statistics' token: ${{ secrets.GITHUB_TOKEN }} @@ -911,7 +912,7 @@ jobs: if: github.event.label.name == 'watch' steps: - name: find comments - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 id: fcid with: actions: 'find-comments' @@ -922,7 +923,7 @@ jobs: - name: create comment if: ${{ steps.fcid.outputs.comments.length == 0 }} - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'create-comment' token: ${{ secrets.GITHUB_TOKEN }} @@ -931,7 +932,7 @@ jobs: - name: update comment if: ${{ steps.fcid.outputs.comments.length == 1 }} - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'update-comment' token: ${{ secrets.GITHUB_TOKEN }} @@ -963,7 +964,7 @@ When the token is not filled in actions or the corresponding secrets are not add ```yml - name: Create issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 id: createissue with: actions: 'create-issue' diff --git a/README.md b/README.md index 98da835..f3243d1 100644 --- a/README.md +++ b/README.md @@ -134,7 +134,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Add assigness - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'add-assignees' token: ${{ secrets.GITHUB_TOKEN }} @@ -176,7 +176,7 @@ jobs: if: contains(github.event.issue.body, 'xxx') == false steps: - name: Add labels - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'add-labels' token: ${{ secrets.GITHUB_TOKEN }} @@ -201,7 +201,7 @@ jobs: ```yml - name: Close issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'close-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -234,7 +234,7 @@ jobs: if: github.event.label.name == 'xxx' steps: - name: Create comment - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'create-comment' token: ${{ secrets.GITHUB_TOKEN }} @@ -278,7 +278,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Create issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'create-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -311,7 +311,7 @@ jobs: ```yml - name: Delete comment - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'delete-comment' token: ${{ secrets.GITHUB_TOKEN }} @@ -343,7 +343,7 @@ jobs: if: github.event.label.name == 'invalid' steps: - name: Lock issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'lock-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -374,7 +374,7 @@ jobs: runs-on: ubuntu-latest steps: - name: mark-duplicate - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'mark-duplicate' token: ${{ secrets.GITHUB_TOKEN }} @@ -392,6 +392,7 @@ jobs: | close-issue | 是否同时关闭该 issue | string | ✖ | - `duplicate-command`:当设置简洁命令时,同时仍支持原有 `Duplicate of` +- `labels`:优先级最高 - `close-issue`:`true` 或 `'true'` 均可生效 ⏫ [返回列表](#列-表) @@ -402,7 +403,7 @@ jobs: ```yml - name: Open issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'open-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -423,7 +424,7 @@ jobs: ```yml - name: Remove assignees - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'remove-assignees' token: ${{ secrets.GITHUB_TOKEN }} @@ -446,7 +447,7 @@ jobs: ```yml - name: Remove labels - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'remove-labels' token: ${{ secrets.GITHUB_TOKEN }} @@ -471,7 +472,7 @@ jobs: ```yml - name: Set labels - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'set-labels' token: ${{ secrets.GITHUB_TOKEN }} @@ -494,7 +495,7 @@ jobs: ```yml - name: Unlock issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'unlock-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -527,7 +528,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Update comment - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'update-comment' token: ${{ secrets.GITHUB_TOKEN }} @@ -555,7 +556,7 @@ jobs: ```yml - name: Update issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'update-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -603,7 +604,7 @@ jobs: runs-on: ubuntu-latest steps: - name: welcome - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'welcome' token: ${{ secrets.GITHUB_TOKEN }} @@ -646,7 +647,7 @@ jobs: runs-on: ubuntu-latest steps: - name: check-inactive - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'check-inactive' token: ${{ secrets.GITHUB_TOKEN }} @@ -695,7 +696,7 @@ jobs: runs-on: ubuntu-latest steps: - name: check-issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'check-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -734,7 +735,7 @@ jobs: runs-on: ubuntu-latest steps: - name: close-issues - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'close-issues' token: ${{ secrets.GITHUB_TOKEN }} @@ -768,7 +769,7 @@ jobs: ```yml - name: Find comments - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'find-comments' token: ${{ secrets.GITHUB_TOKEN }} @@ -816,7 +817,7 @@ jobs: runs-on: ubuntu-latest steps: - name: lock-issues - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'lock-issues' token: ${{ secrets.GITHUB_TOKEN }} @@ -862,7 +863,7 @@ jobs: runs-on: ubuntu-latest steps: - name: month-statistics - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'month-statistics' token: ${{ secrets.GITHUB_TOKEN }} @@ -905,7 +906,7 @@ jobs: if: github.event.label.name == 'watch' steps: - name: find comments - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 id: fcid with: actions: 'find-comments' @@ -916,7 +917,7 @@ jobs: - name: create comment if: ${{ steps.fcid.outputs.comments.length == 0 }} - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'create-comment' token: ${{ secrets.GITHUB_TOKEN }} @@ -925,7 +926,7 @@ jobs: - name: update comment if: ${{ steps.fcid.outputs.comments.length == 1 }} - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'update-comment' token: ${{ secrets.GITHUB_TOKEN }} @@ -957,7 +958,7 @@ jobs: ```yml - name: Create issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 id: createissue with: actions: 'create-issue' diff --git a/USERS.js b/USERS.js index 27bcaa9..87db1a6 100644 --- a/USERS.js +++ b/USERS.js @@ -1,7 +1,5 @@ // ************************************************************************** - // Add to end - const users = [ { url: 'https://github.com/ant-design/ant-design', @@ -42,7 +40,6 @@ const users = [ ]; // ************************************************************************** - module.exports = { users }; diff --git a/dist/index.js b/dist/index.js index d9c80bb..5fbe4ec 100644 --- a/dist/index.js +++ b/dist/index.js @@ -8049,15 +8049,27 @@ async function doMarkDuplicate (owner, repo, labels) { } else if (contents) { await doCreateCommentContent(owner, repo, commentId, dealStringToArr(contents)); } - if (duplicateLabels) { - await doAddLabels(owner, repo, issueNumber, duplicateLabels); + + const issue = await octokit.issues.get({ + owner, + repo, + issue_number: issueNumber + }); + let newLabels = []; + if (issue.data.labels.length > 0) { + newLabels = issue.data.labels.map(({ name }) => name).filter(name => !dealStringToArr(removeLables).includes(name)); } - if (removeLables) { - await doRemoveLabels(owner, repo, issueNumber, removeLables); + if (duplicateLabels) { + newLabels = [...newLabels, ...dealStringToArr(duplicateLabels)]; } if (labels) { - await doSetLabels(owner, repo, issueNumber, labels); + newLabels = dealStringToArr(labels); } + if (newLabels.length > 0) { + await doSetLabels(owner, repo, issueNumber, newLabels.toString()); + core.info(`Actions: [mark-duplicate-labels][${newLabels}] success!`); + } + if (closeIssue == 'true') { await doCloseIssue(owner, repo, issueNumber); } @@ -8087,35 +8099,49 @@ async function doRemoveAssignees (owner, repo, issueNumber, assignees) { }; async function doRemoveLabels (owner, repo, issueNumber, labels) { - const issue = await octokit.issues.get({ - owner, - repo, - issue_number: issueNumber - }); const dealLabels = dealStringToArr(labels); - let addLables = []; - if (dealLabels.length) { - issue.data.labels.forEach(item => { - !dealLabels.includes(item.name) ? addLables.push(item.name) : ''; - }) - await octokit.issues.setLabels({ + for (label of dealLabels) { + await octokit.issues.removeLabel({ owner, repo, issue_number: issueNumber, - labels: addLables + name: label, }); - core.info(`Actions: [remove-labels][${labels}] success!`); + core.info(`Actions: [remove-labels-foreach][${label}] success!`); } + core.info(`Actions: [remove-labels][${labels}] success!`); }; async function doSetLabels (owner, repo, issueNumber, labels) { - await octokit.issues.setLabels({ - owner, - repo, - issue_number: issueNumber, - labels: dealStringToArr(labels) - }); - core.info(`Actions: [set-labels][${labels}] success!`); + // 概率性出现问题:https://github.com/octokit/rest.js/issues/1982,规避 setLabels + if (labels) { + // await octokit.issues.setLabels({ + // owner, + // repo, + // issue_number: issueNumber, + // labels: dealStringToArr(labels) + // }); + const issue = await octokit.issues.get({ + owner, + repo, + issue_number: issueNumber + }); + const baseLabels = issue.data.labels.map(({ name }) => name); + const removeLabels = baseLabels.filter(name => !dealStringToArr(labels).includes(name)); + const addLabels = dealStringToArr(labels).filter(name => !baseLabels.includes(name)); + + if (removeLabels.length > 0) { + await doRemoveLabels(owner, repo, issueNumber, removeLabels.toString()); + core.info(`Actions: [set-labels-remove][${removeLabels}] success!`); + } + + if (addLabels.length > 0) { + await doAddLabels(owner, repo, issueNumber, addLabels.toString()); + core.info(`Actions: [set-labels-add][${addLabels}] success!`); + } + + core.info(`Actions: [set-labels][${labels}] success!`); + } }; async function doUnlockIssue (owner, repo, issueNumber) { diff --git a/docs/advanced.en-US.md b/docs/advanced.en-US.md index 8b47522..a4069e4 100644 --- a/docs/advanced.en-US.md +++ b/docs/advanced.en-US.md @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest steps: - name: check-inactive - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'check-inactive' token: ${{ secrets.GITHUB_TOKEN }} @@ -73,7 +73,7 @@ jobs: runs-on: ubuntu-latest steps: - name: check-issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'check-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -110,7 +110,7 @@ jobs: runs-on: ubuntu-latest steps: - name: close-issues - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'close-issues' token: ${{ secrets.GITHUB_TOKEN }} @@ -142,7 +142,7 @@ Find the current warehouse issue No. 1, the creator is k and the content contain ```yml - name: Find comments - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'find-comments' token: ${{ secrets.GITHUB_TOKEN }} @@ -188,7 +188,7 @@ jobs: runs-on: ubuntu-latest steps: - name: lock-issues - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'lock-issues' token: ${{ secrets.GITHUB_TOKEN }} @@ -232,7 +232,7 @@ jobs: runs-on: ubuntu-latest steps: - name: month-statistics - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'month-statistics' token: ${{ secrets.GITHUB_TOKEN }} diff --git a/docs/advanced.md b/docs/advanced.md index c4f3710..46dd1de 100644 --- a/docs/advanced.md +++ b/docs/advanced.md @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest steps: - name: check-inactive - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'check-inactive' token: ${{ secrets.GITHUB_TOKEN }} @@ -69,7 +69,7 @@ jobs: runs-on: ubuntu-latest steps: - name: check-issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'check-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -106,7 +106,7 @@ jobs: runs-on: ubuntu-latest steps: - name: close-issues - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'close-issues' token: ${{ secrets.GITHUB_TOKEN }} @@ -138,7 +138,7 @@ jobs: ```yml - name: Find comments - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'find-comments' token: ${{ secrets.GITHUB_TOKEN }} @@ -184,7 +184,7 @@ jobs: runs-on: ubuntu-latest steps: - name: lock-issues - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'lock-issues' token: ${{ secrets.GITHUB_TOKEN }} @@ -228,7 +228,7 @@ jobs: runs-on: ubuntu-latest steps: - name: month-statistics - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'month-statistics' token: ${{ secrets.GITHUB_TOKEN }} diff --git a/docs/base.en-US.md b/docs/base.en-US.md index e0f622b..0ba3e97 100644 --- a/docs/base.en-US.md +++ b/docs/base.en-US.md @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Add assigness - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'add-assignees' token: ${{ secrets.GITHUB_TOKEN }} @@ -62,7 +62,7 @@ jobs: if: contains(github.event.issue.body, 'xxx') == false steps: - name: Add labels - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'add-labels' token: ${{ secrets.GITHUB_TOKEN }} @@ -85,7 +85,7 @@ Close the specified issue. ```yml - name: Close issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'close-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -116,7 +116,7 @@ jobs: if: github.event.label.name == 'xxx' steps: - name: Create comment - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'create-comment' token: ${{ secrets.GITHUB_TOKEN }} @@ -158,7 +158,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Create issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'create-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -189,7 +189,7 @@ According to [`comment-id`](/en-US/guide/ref#-comment-id) delete the specified c ```yml - name: Delete comment - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'delete-comment' token: ${{ secrets.GITHUB_TOKEN }} @@ -219,7 +219,7 @@ jobs: if: github.event.label.name == 'invalid' steps: - name: Lock issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'lock-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -248,7 +248,7 @@ jobs: runs-on: ubuntu-latest steps: - name: mark-duplicate - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'mark-duplicate' token: ${{ secrets.GITHUB_TOKEN }} @@ -266,6 +266,7 @@ jobs: | close-issue | Whether to close the issue at the same time | string | ✖ | - `duplicate-command`: When setting concise commands, while still supporting the original `Duplicate of` +- `labels`: Highest priority - `close-issue`: Both `true` or `'true'` can take effect @@ -280,7 +281,7 @@ Open the specified issue. ```yml - name: Open issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'open-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -299,7 +300,7 @@ Remove the person designated by issue. ```yml - name: Remove assignees - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'remove-assignees' token: ${{ secrets.GITHUB_TOKEN }} @@ -320,7 +321,7 @@ Remove the specified labels. ```yml - name: Remove labels - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'remove-labels' token: ${{ secrets.GITHUB_TOKEN }} @@ -343,7 +344,7 @@ Replace the labels of issue. ```yml - name: Set labels - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'set-labels' token: ${{ secrets.GITHUB_TOKEN }} @@ -364,7 +365,7 @@ Unlock the specified issue. ```yml - name: Unlock issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'unlock-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -395,7 +396,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Update comment - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'update-comment' token: ${{ secrets.GITHUB_TOKEN }} @@ -421,7 +422,7 @@ Update the specified issue according to the `issue-number`. ```yml - name: Update issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'update-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -469,7 +470,7 @@ jobs: runs-on: ubuntu-latest steps: - name: welcome - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'welcome' token: ${{ secrets.GITHUB_TOKEN }} diff --git a/docs/base.md b/docs/base.md index b58486b..e1708b0 100644 --- a/docs/base.md +++ b/docs/base.md @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Add assigness - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'add-assignees' token: ${{ secrets.GITHUB_TOKEN }} @@ -62,7 +62,7 @@ jobs: if: contains(github.event.issue.body, 'xxx') == false steps: - name: Add labels - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'add-labels' token: ${{ secrets.GITHUB_TOKEN }} @@ -85,7 +85,7 @@ jobs: ```yml - name: Close issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'close-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -116,7 +116,7 @@ jobs: if: github.event.label.name == 'xxx' steps: - name: Create comment - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'create-comment' token: ${{ secrets.GITHUB_TOKEN }} @@ -158,7 +158,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Create issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'create-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -189,7 +189,7 @@ jobs: ```yml - name: Delete comment - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'delete-comment' token: ${{ secrets.GITHUB_TOKEN }} @@ -219,7 +219,7 @@ jobs: if: github.event.label.name == 'invalid' steps: - name: Lock issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'lock-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -248,7 +248,7 @@ jobs: runs-on: ubuntu-latest steps: - name: mark-duplicate - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'mark-duplicate' token: ${{ secrets.GITHUB_TOKEN }} @@ -266,6 +266,7 @@ jobs: | close-issue | 是否同时关闭该 issue | string | ✖ | - `duplicate-command`:当设置简洁命令时,同时仍支持原有 `Duplicate of` +- `labels`:优先级最高 - `close-issue`:`true` 或 `'true'` 均可生效 @@ -280,7 +281,7 @@ jobs: ```yml - name: Open issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'open-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -299,7 +300,7 @@ jobs: ```yml - name: Remove assignees - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'remove-assignees' token: ${{ secrets.GITHUB_TOKEN }} @@ -320,7 +321,7 @@ jobs: ```yml - name: Remove labels - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'remove-labels' token: ${{ secrets.GITHUB_TOKEN }} @@ -343,7 +344,7 @@ jobs: ```yml - name: Set labels - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'set-labels' token: ${{ secrets.GITHUB_TOKEN }} @@ -364,7 +365,7 @@ jobs: ```yml - name: Unlock issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'unlock-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -395,7 +396,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Update comment - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'update-comment' token: ${{ secrets.GITHUB_TOKEN }} @@ -421,7 +422,7 @@ jobs: ```yml - name: Update issue - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'update-issue' token: ${{ secrets.GITHUB_TOKEN }} @@ -468,7 +469,7 @@ jobs: runs-on: ubuntu-latest steps: - name: welcome - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'welcome' token: ${{ secrets.GITHUB_TOKEN }} diff --git a/docs/index.en-US.md b/docs/index.en-US.md index e706d72..46fc055 100644 --- a/docs/index.en-US.md +++ b/docs/index.en-US.md @@ -38,7 +38,7 @@ jobs: steps: - name: help wanted if: github.event.label.name == 'help wanted' - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'create-comment' token: ${{ secrets.GITHUB_TOKEN }} diff --git a/docs/index.md b/docs/index.md index 9e22268..e5317ef 100644 --- a/docs/index.md +++ b/docs/index.md @@ -38,7 +38,7 @@ jobs: steps: - name: help wanted if: github.event.label.name == 'help wanted' - uses: actions-cool/issues-helper@v1.9 + uses: actions-cool/issues-helper@v1.10 with: actions: 'create-comment' token: ${{ secrets.GITHUB_TOKEN }} diff --git a/package.json b/package.json index f64b9db..25787f5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "issue-helper", - "version": "1.9.0", + "version": "1.10.0", "private": true, "description": "Some operations on issue.", "main": "src/main.js", diff --git a/script/update-version.js b/script/update-version.js index 7a768cf..ab69262 100644 --- a/script/update-version.js +++ b/script/update-version.js @@ -1,7 +1,7 @@ const { readFileSync, writeFileSync } = require('fs'); -const last = /v1\.8/g; -const now = 'v1.9'; +const last = /v1\.9/g; +const now = 'v1.10'; let readme = readFileSync('./README.md', 'utf-8'); readme = readme.replace(last, now); diff --git a/src/base.js b/src/base.js index 4d484e4..660537d 100644 --- a/src/base.js +++ b/src/base.js @@ -178,15 +178,27 @@ async function doMarkDuplicate (owner, repo, labels) { } else if (contents) { await doCreateCommentContent(owner, repo, commentId, dealStringToArr(contents)); } - if (duplicateLabels) { - await doAddLabels(owner, repo, issueNumber, duplicateLabels); + + const issue = await octokit.issues.get({ + owner, + repo, + issue_number: issueNumber + }); + let newLabels = []; + if (issue.data.labels.length > 0) { + newLabels = issue.data.labels.map(({ name }) => name).filter(name => !dealStringToArr(removeLables).includes(name)); } - if (removeLables) { - await doRemoveLabels(owner, repo, issueNumber, removeLables); + if (duplicateLabels) { + newLabels = [...newLabels, ...dealStringToArr(duplicateLabels)]; } if (labels) { - await doSetLabels(owner, repo, issueNumber, labels); + newLabels = dealStringToArr(labels); } + if (newLabels.length > 0) { + await doSetLabels(owner, repo, issueNumber, newLabels.toString()); + core.info(`Actions: [mark-duplicate-labels][${newLabels}] success!`); + } + if (closeIssue == 'true') { await doCloseIssue(owner, repo, issueNumber); } @@ -216,35 +228,49 @@ async function doRemoveAssignees (owner, repo, issueNumber, assignees) { }; async function doRemoveLabels (owner, repo, issueNumber, labels) { - const issue = await octokit.issues.get({ - owner, - repo, - issue_number: issueNumber - }); const dealLabels = dealStringToArr(labels); - let addLables = []; - if (dealLabels.length) { - issue.data.labels.forEach(item => { - !dealLabels.includes(item.name) ? addLables.push(item.name) : ''; - }) - await octokit.issues.setLabels({ + for (label of dealLabels) { + await octokit.issues.removeLabel({ owner, repo, issue_number: issueNumber, - labels: addLables + name: label, }); - core.info(`Actions: [remove-labels][${labels}] success!`); + core.info(`Actions: [remove-labels-foreach][${label}] success!`); } + core.info(`Actions: [remove-labels][${labels}] success!`); }; async function doSetLabels (owner, repo, issueNumber, labels) { - await octokit.issues.setLabels({ - owner, - repo, - issue_number: issueNumber, - labels: dealStringToArr(labels) - }); - core.info(`Actions: [set-labels][${labels}] success!`); + // 概率性出现问题:https://github.com/octokit/rest.js/issues/1982,规避 setLabels + if (labels) { + // await octokit.issues.setLabels({ + // owner, + // repo, + // issue_number: issueNumber, + // labels: dealStringToArr(labels) + // }); + const issue = await octokit.issues.get({ + owner, + repo, + issue_number: issueNumber + }); + const baseLabels = issue.data.labels.map(({ name }) => name); + const removeLabels = baseLabels.filter(name => !dealStringToArr(labels).includes(name)); + const addLabels = dealStringToArr(labels).filter(name => !baseLabels.includes(name)); + + if (removeLabels.length > 0) { + await doRemoveLabels(owner, repo, issueNumber, removeLabels.toString()); + core.info(`Actions: [set-labels-remove][${removeLabels}] success!`); + } + + if (addLabels.length > 0) { + await doAddLabels(owner, repo, issueNumber, addLabels.toString()); + core.info(`Actions: [set-labels-add][${addLabels}] success!`); + } + + core.info(`Actions: [set-labels][${labels}] success!`); + } }; async function doUnlockIssue (owner, repo, issueNumber) {