Files
RSSHub/scripts/workflow/test-route/identify.js
2021-06-15 17:56:18 +00:00

103 lines
3.1 KiB
JavaScript

const noFound = 'Auto: Route No Found';
const whiteListedUser = ['dependabot[bot]'];
module.exports = async ({ github, context, core }, body, number) => {
core.debug(`sender: ${context.payload.sender.login}`);
core.debug(`body: ${body}`);
const m = body.match(/```routes\r\n((.|\r\n)*)```/);
core.debug(`match: ${m}`);
let res = null;
const removeLabel = async () =>
github.issues
.removeLabel({
issue_number: number,
owner: context.repo.owner,
repo: context.repo.repo,
name: noFound,
})
.catch((e) => {
core.warning(e);
});
if (whiteListedUser.includes(context.payload.sender.login)) {
core.info('PR created by a whitelisted user, passing');
await removeLabel();
await github.issues
.addLabels({
issue_number: number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: ['Auto: whitelisted'],
})
.catch((e) => {
core.warning(e);
});
return;
} else {
core.debug('PR created by ' + context.payload.sender.login);
}
if (m && m[1]) {
res = m[1].trim().split('\r\n');
core.info(`routes detected: ${res}`);
if (res.length > 0 && res[0] === 'NOROUTE') {
core.info('PR stated no route, passing');
await removeLabel();
await github.issues
.addLabels({
issue_number: number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: ['Auto: No Route Needed'],
})
.catch((e) => {
core.warning(e);
});
return;
} else if (res.length > 0) {
core.exportVariable('TEST_CONTINUE', true);
await removeLabel();
return res;
}
}
core.warning('seems no route found, failing');
await github.issues
.addLabels({
issue_number: number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: [noFound],
})
.catch((e) => {
core.warning(e);
});
await github.issues
.createComment({
issue_number: number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `自动检测失败, 请确认PR正文部分符合格式规范并重新开启, 详情请检查日志
Auto Route test failed, please check your PR body format and reopen pull request. Check logs for more details`,
})
.catch((e) => {
core.warning(e);
});
await github.pulls
.update({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: number,
state: 'closed',
})
.catch((e) => {
core.warning(e);
});
throw 'Please follow the PR rules: failed to detect route';
};