feat: add more

This commit is contained in:
xrkffgg
2020-12-22 18:14:54 +08:00
parent d70e5ec168
commit 5a0b58c5e3
7 changed files with 302 additions and 41 deletions

33
src/advanced.js Normal file
View File

@@ -0,0 +1,33 @@
require('dotenv').config();
const core = require("@actions/core");
const { Octokit } = require('@octokit/rest');
const token = core.getInput('token') || process.env.GH_TOKEN;
const octokit = new Octokit({ auth: `token ${token}` });
const commentAuth = core.getInput("comment-auth") || 'xrkffgg';
const bodyIncludes = core.getInput('body-includes') || 'is';
async function doFindComments (owner, repo, issueNumber) {
const res = await octokit.issues.listComments({
owner,
repo,
issue_number: issueNumber
});
core.info(`Actions: [find-comments][${issueNumber}] success!`);
let comments = [];
res.data.forEach(item => {
if ((commentAuth ? item.user.login === commentAuth : true) && (bodyIncludes ? item.body.includes(bodyIncludes) : true)) {
comments.push({
id: item.id,
body: item.body
})
}
})
core.setOutput("comments", comments);
};
module.exports = {
doFindComments,
};

View File

@@ -38,6 +38,20 @@ async function doAddLabels (owner, repo, issueNumber, labels) {
core.info(`Actions: [add-labels][${labels}] success!`);
};
async function doCloseIssue (owner, repo, issueNumber) {
if (core.getInput("body")) {
await doCreateComment(owner, repo, issueNumber, core.getInput("body"))
}
await octokit.issues.update({
owner,
repo,
issue_number: issueNumber,
state: 'closed'
});
core.info(`Actions: [close-issue][${issueNumber}] success!`);
};
async function doCreateComment (owner, repo, issueNumber, body) {
const { data } = await octokit.issues.createComment({
owner,
@@ -92,7 +106,7 @@ async function doCreateIssue (owner, repo, title, body, labels, assignees) {
}
const { data } = await octokit.issues.create(params);
core.info(`Actions: [create-issue][${title}] success!`);
core.setOutput("issue_number", data.number);
core.setOutput("issue-number", data.number);
if (contents) {
await doCreateIssueContent(owner, repo, data.number, contents);
@@ -141,6 +155,20 @@ async function doLockIssue (owner, repo, issueNumber) {
core.info(`Actions: [lock-issue][${issueNumber}] success!`);
};
async function doOpenIssue (owner, repo, issueNumber) {
if (core.getInput("body")) {
await doCreateComment(owner, repo, issueNumber, core.getInput("body"))
}
await octokit.issues.update({
owner,
repo,
issue_number: issueNumber,
state: 'open'
});
core.info(`Actions: [open-issue][${issueNumber}] success!`);
};
async function doRemoveAssignees (owner, repo, issueNumber, assignees) {
await octokit.issues.removeAssignees({
owner,
@@ -190,14 +218,16 @@ async function doUpdateComment (
comment_id: commentId
};
if (updateMode === 'append') {
params.body = `${comment_body}\n${body}`;
} else {
params.body = body;
}
if (core.getInput("body")) {
if (updateMode === 'append') {
params.body = `${comment_body}\n${body}`;
} else {
params.body = body;
}
await octokit.issues.updateComment(params);
core.info(`Actions: [update-comment][${commentId}] success!`);
await octokit.issues.updateComment(params);
core.info(`Actions: [update-comment][${commentId}] success!`);
}
if (contents) {
await doCreateCommentContent(owner, repo, commentId, contents);
@@ -280,15 +310,17 @@ function testContent(con) {
module.exports = {
doAddAssignees,
doAddLabels,
doCloseIssue,
doCreateComment,
doCreateCommentContent,
doCreateIssue,
doCreateIssueContent,
doDeleteComment,
doLockIssue,
doOpenIssue,
doRemoveAssignees,
doSetLabels,
doUnlockIssue,
doUpdateComment,
doUpdateIssue,
doUpdateComment
};

View File

@@ -4,38 +4,53 @@ const github = require("@actions/github");
const {
doAddAssignees,
doAddLabels,
doCloseIssue,
doCreateComment,
doCreateCommentContent,
doCreateIssue,
doCreateIssueContent,
doDeleteComment,
doLockIssue,
doOpenIssue,
doRemoveAssignees,
doSetLabels,
doUnlockIssue,
doUpdateComment,
doUpdateIssue,
doUpdateComment
} = require('./base.js');
const {
doFindComments,
} = require('./advanced.js');
const ALLACTIONS = [
// base
'add-assignees',
'add-labels',
'close-issue',
'create-comment',
'create-issue',
'delete-comment',
'lock-issue',
'open-issue',
'remove-assignees',
'set-labels',
'unlock-issue',
'update-comment',
'update-issue',
// advanced
'find-comments',
];
async function main() {
try {
const owner = github.context.repo.owner;
const repo = github.context.repo.repo;
const issueNumber = core.getInput('issue-number');
// 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 defaultBody = `Currently at ${owner}/${repo}. And this is default comment.`
@@ -54,7 +69,8 @@ async function main() {
updateMode = 'replace';
}
const actions = core.getInput("actions", { required: true });
// const actions = core.getInput("actions", { required: true });
const actions = 'find-comments';
if (typeof(actions) === 'object') {
actions.forEach(item => {
@@ -74,12 +90,16 @@ async function main() {
async function choseActions(action) {
switch (action) {
// base
case 'add-assignees':
await doAddAssignees(owner, repo, issueNumber, assignees);
break;
case 'add-labels':
await doAddLabels(owner, repo, issueNumber, labels);
break;
case 'close-issue':
await doCloseIssue(owner, repo, issueNumber);
break;
case 'create-comment':
await doCreateComment(owner, repo, issueNumber, body);
break;
@@ -92,6 +112,9 @@ async function main() {
case 'lock-issue':
await doLockIssue(owner, repo, issueNumber);
break;
case 'open-issue':
await doOpenIssue(owner, repo, issueNumber);
break;
case 'remove-assignees':
await doRemoveAssignees(owner, repo, issueNumber, assignees);
break;
@@ -123,6 +146,18 @@ async function main() {
labels
);
break;
// advanced
case 'find-comments':
await doFindComments(
owner,
repo,
issueNumber
);
break;
// ultimate
// default
default:
break;
}

6
src/ultimate.js Normal file
View File

@@ -0,0 +1,6 @@
require('dotenv').config();
const core = require("@actions/core");
const { Octokit } = require('@octokit/rest');
const token = core.getInput('token') || process.env.GH_TOKEN;
const octokit = new Octokit({ auth: `token ${token}` });