diff --git a/.env b/.env new file mode 100644 index 0000000..9fbd201 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +GH_TOKEN= \ No newline at end of file diff --git a/README.md b/README.md index 9ba47cf..71aa0da 100644 --- a/README.md +++ b/README.md @@ -1 +1,8 @@ -# issue-helper \ No newline at end of file +# Issue Helper + +A GitHub action to help you deal with the issue. + +## Usage + +### `add-assignees` + diff --git a/README.zh-CN.md b/README.zh-CN.md new file mode 100644 index 0000000..6781fa9 --- /dev/null +++ b/README.zh-CN.md @@ -0,0 +1,8 @@ +# Issue Helper + +一个可以帮助你处理 issue 的 GitHub Action。 + +## 使用 + + + diff --git a/package.json b/package.json index 2ee7d35..1caa829 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "@octokit/rest": "^18.0.12" }, "devDependencies": { - "@vercel/ncc": "^0.25.1" + "@vercel/ncc": "^0.25.1", + "dotenv": "^8.2.0" } } diff --git a/src/main.js b/src/main.js index 6bf33fa..8a5cca3 100644 --- a/src/main.js +++ b/src/main.js @@ -1,24 +1,60 @@ +require('dotenv').config(); + const core = require("@actions/core"); const github = require("@actions/github"); const { Octokit } = require('@octokit/rest'); -const REACTION_TYPES = [ - "+1", - "-1", - "laugh", - "confused", - "heart", - "hooray", - "rocket", - "eyes", +const { + doAddAssignees +} = require('./tool'); + +const ALLACTIONS = [ + 'add-assignees', + 'add-labels' ]; async function main() { try { - const token = core.getInput('token'); - const owner = github.context.repo.owner; - const repo = github.context.repo.repo; - console.log(owner, repo) + const token = core.getInput('token') || process.env.GH_TOKEN; + + const octokit = new Octokit({ auth: `token ${token}` }); + // const owner = github.context.repo.owner; + // const repo = github.context.repo.repo; + const owner = 'actions-cool'; + const repo = 'issue-helper'; + const issueNumber = core.getInput('issue-number') || 1; + const commentId = core.getInput('comment-id'); + const body = core.getInput("body"); + // const assignees = core.getInput("assignees"); + const assignees = 'xrkffgg' + + const actions = ['add-assignees', 'add-labels']; + // const actions = core.getInput("actions", { required: true }); + + if (typeof(actions) === 'object') { + actions.forEach(item => { + testActions(item); + }) + } else { + testActions(actions); + } + + function testActions(action) { + if (ALLACTIONS.includes(action)) { + choseActions(action); + } else { + core.setFailed("This actions not supported!"); + } + }; + + async function choseActions(action) { + switch (action) { + case 'add-assignees': + await doAddAssignees(octokit, owner, repo, issueNumber, assignees); + default: + break; + } + } } catch (error) { core.setFailed(error.message); diff --git a/src/tool.js b/src/tool.js new file mode 100644 index 0000000..00910a3 --- /dev/null +++ b/src/tool.js @@ -0,0 +1,30 @@ +const REACTION_TYPES = [ + "+1", + "-1", + "laugh", + "confused", + "heart", + "hooray", + "rocket", + "eyes", +]; + +const doAddAssignees = async ({ + octokit, + owner, + repo, + issueNumber, + assignees +}) => { + await octokit.issues.addAssignees({ + owner, + repo, + issue_number: issueNumber, + assignees + }); +}; + + +module.exports = { + doAddAssignees +};