mirror of
https://gitea.com/Lydanne/pr-extract-issues.git
synced 2025-08-18 17:56:08 +08:00
add
This commit is contained in:
44
README.md
44
README.md
@@ -7,9 +7,53 @@
|
||||
## How to use?
|
||||
|
||||
```yml
|
||||
name: PR Extract Issues
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, edited, synchronize]
|
||||
|
||||
jobs:
|
||||
extract:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions-cool/pr-extract-issues@v1.0.0
|
||||
with:
|
||||
way: 'commit'
|
||||
issues-lables: 'l1, l2'
|
||||
issues-comment: |
|
||||
HI。这个 issue: ${number} 已经被修复了。
|
||||
issues-close: true
|
||||
```
|
||||
|
||||
### Input
|
||||
|
||||
| Name | Desc | Type | Required |
|
||||
| -- | -- | -- | -- |
|
||||
| token | GitHub token | string | ✖ |
|
||||
| way | The way to query issues. Options: `title` `body` `commit` | string | ✔ |
|
||||
| issues-lables | Extra labels on issues | string | ✖ |
|
||||
| issues-comment | Extra comment on issues | string | ✖ |
|
||||
| issues-close | Extra close issues | string | ✖ |
|
||||
|
||||
- `title`: The PR title. Will only match like
|
||||
- fix: fix other #123 #456 #789
|
||||
- Get: 123 456 789
|
||||
- refctore: use other #222 #333#44
|
||||
- Get:222 33344
|
||||
- So you should start with a space # and end with a space
|
||||
- `body`:The PR body
|
||||
- Like: https://github.com/actions-cool/pr-extract-issues/pull/4
|
||||
- Branch whole line display with # start
|
||||
- `commit`: Like `title`
|
||||
- `issues-lables`: Support multiple, need to be separated by comma
|
||||
- `issues-comment`: `${number}` will be replaced with the current issue number
|
||||
- `issues-close`: Whether close issue
|
||||
|
||||
### Output
|
||||
|
||||
- `issues`: Get issues numbers
|
||||
|
||||
## ⚡ Feedback
|
||||
|
||||
You are very welcome to try it out and put forward your comments. You can use the following methods:
|
||||
|
@@ -16,6 +16,12 @@ inputs:
|
||||
way:
|
||||
description: The way to query issues.
|
||||
required: true
|
||||
issues-lables:
|
||||
description: Extra operations on issues
|
||||
issues-comment:
|
||||
description: Extra operations on issues
|
||||
issues-close:
|
||||
description: Extra operations on issues
|
||||
|
||||
outputs:
|
||||
issues:
|
||||
|
85
dist/index.js
vendored
85
dist/index.js
vendored
@@ -3666,6 +3666,49 @@ exports.Octokit = Octokit;
|
||||
//# sourceMappingURL=index.js.map
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 55:
|
||||
/***/ ((__unused_webpack_module, exports) => {
|
||||
|
||||
"use strict";
|
||||
|
||||
|
||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||
|
||||
var checkPermission = function checkPermission(require, permission) {
|
||||
/**
|
||||
* 有权限返回 true
|
||||
*/
|
||||
var permissions = ['read', 'write', 'admin'];
|
||||
var requireNo = permissions.indexOf(require);
|
||||
var permissionNo = permissions.indexOf(permission);
|
||||
return requireNo <= permissionNo;
|
||||
};
|
||||
|
||||
var dealStringToArr = function dealStringToArr(para) {
|
||||
/**
|
||||
* in 'x1,x2,x3'
|
||||
* out ['x1','x2','x3']
|
||||
*/
|
||||
var arr = [];
|
||||
|
||||
if (para) {
|
||||
var paraArr = para.split(',');
|
||||
paraArr.forEach(function (it) {
|
||||
if (it.trim()) {
|
||||
arr.push(it.trim());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return arr;
|
||||
};
|
||||
|
||||
exports.checkPermission = checkPermission;
|
||||
exports.dealStringToArr = dealStringToArr;
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 682:
|
||||
@@ -5931,6 +5974,7 @@ function wrappy (fn, cb) {
|
||||
const core = __nccwpck_require__(186);
|
||||
const { Octokit } = __nccwpck_require__(375);
|
||||
const github = __nccwpck_require__(438);
|
||||
const { dealStringToArr } = __nccwpck_require__(55);
|
||||
|
||||
// **********************************************************
|
||||
const token = core.getInput('token');
|
||||
@@ -5960,7 +6004,7 @@ async function run() {
|
||||
let arr = body.split('\n');
|
||||
arr.forEach(it => {
|
||||
if (it.startsWith('#')) {
|
||||
issues.push(it.replace('#', ''));
|
||||
issues.push(it.replace('#', '').replace('\n', ''));
|
||||
}
|
||||
});
|
||||
} else if (way === 'commit') {
|
||||
@@ -5986,6 +6030,45 @@ async function run() {
|
||||
|
||||
core.info(`[Action: Query Issues][${issues}]`);
|
||||
core.setOutput('issues', issues);
|
||||
|
||||
const lables = core.getInput('issues-lables');
|
||||
const comment = core.getInput('issues-comment');
|
||||
const close = core.getInput('issues-close');
|
||||
|
||||
if (!lables && !comment && !close) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for await (let issue of issues) {
|
||||
if (lables) {
|
||||
await octokit.issues.addLabels({
|
||||
owner,
|
||||
repo,
|
||||
issue_number: issue,
|
||||
labels: dealStringToArr(labels),
|
||||
});
|
||||
core.info(`Actions: [add-labels][${issue}][${labels}] success!`);
|
||||
}
|
||||
if (comment) {
|
||||
comment.replace('${number}', `#${issue}`);
|
||||
await octokit.issues.createComment({
|
||||
owner,
|
||||
repo,
|
||||
issue_number: issue,
|
||||
comment,
|
||||
});
|
||||
core.info(`Actions: [create-comment][${issue}][${comment}] success!`);
|
||||
}
|
||||
if (close == 'true') {
|
||||
await octokit.issues.update({
|
||||
owner,
|
||||
repo,
|
||||
issue_number: issue,
|
||||
state: 'closed',
|
||||
});
|
||||
core.info(`Actions: [close-issue][${issue}] success!`);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
core.setFailed(outEventErr);
|
||||
}
|
||||
|
@@ -14,7 +14,8 @@
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.2.6",
|
||||
"@actions/github": "^4.0.0",
|
||||
"@octokit/rest": "^18.0.14"
|
||||
"@octokit/rest": "^18.0.14",
|
||||
"actions-util": "^1.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@umijs/fabric": "^2.5.6",
|
||||
|
42
src/main.js
42
src/main.js
@@ -1,6 +1,7 @@
|
||||
const core = require('@actions/core');
|
||||
const { Octokit } = require('@octokit/rest');
|
||||
const github = require('@actions/github');
|
||||
const { dealStringToArr } = require('actions-util');
|
||||
|
||||
// **********************************************************
|
||||
const token = core.getInput('token');
|
||||
@@ -30,7 +31,7 @@ async function run() {
|
||||
let arr = body.split('\n');
|
||||
arr.forEach(it => {
|
||||
if (it.startsWith('#')) {
|
||||
issues.push(it.replace('#', ''));
|
||||
issues.push(it.replace('#', '').replace('\n', ''));
|
||||
}
|
||||
});
|
||||
} else if (way === 'commit') {
|
||||
@@ -56,6 +57,45 @@ async function run() {
|
||||
|
||||
core.info(`[Action: Query Issues][${issues}]`);
|
||||
core.setOutput('issues', issues);
|
||||
|
||||
const lables = core.getInput('issues-lables');
|
||||
const comment = core.getInput('issues-comment');
|
||||
const close = core.getInput('issues-close');
|
||||
|
||||
if (!lables && !comment && !close) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for await (let issue of issues) {
|
||||
if (lables) {
|
||||
await octokit.issues.addLabels({
|
||||
owner,
|
||||
repo,
|
||||
issue_number: issue,
|
||||
labels: dealStringToArr(labels),
|
||||
});
|
||||
core.info(`Actions: [add-labels][${issue}][${labels}] success!`);
|
||||
}
|
||||
if (comment) {
|
||||
comment.replace('${number}', `#${issue}`);
|
||||
await octokit.issues.createComment({
|
||||
owner,
|
||||
repo,
|
||||
issue_number: issue,
|
||||
comment,
|
||||
});
|
||||
core.info(`Actions: [create-comment][${issue}][${comment}] success!`);
|
||||
}
|
||||
if (close == 'true') {
|
||||
await octokit.issues.update({
|
||||
owner,
|
||||
repo,
|
||||
issue_number: issue,
|
||||
state: 'closed',
|
||||
});
|
||||
core.info(`Actions: [close-issue][${issue}] success!`);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
core.setFailed(outEventErr);
|
||||
}
|
||||
|
Reference in New Issue
Block a user