mirror of
https://github.com/DIYgod/RSSHub.git
synced 2025-12-03 18:48:12 +08:00
fix(workflow): eslint and NOROUTE [skip ci]
This commit is contained in:
2
.github/ISSUE_TEMPLATE/bug_report_en.yml
vendored
2
.github/ISSUE_TEMPLATE/bug_report_en.yml
vendored
@@ -13,7 +13,7 @@ body:
|
|||||||
id: routes
|
id: routes
|
||||||
attributes:
|
attributes:
|
||||||
label: Routes
|
label: Routes
|
||||||
description: The involved route, without any parameters, copied directly from the docs "route" field, one link per line.
|
description: The involved route, without any parameters, copied directly from the docs "route" field, one link per line. Use `NOROUTE` if it is not route related.
|
||||||
placeholder: /rsshub/someroute/:type?
|
placeholder: /rsshub/someroute/:type?
|
||||||
render: routes
|
render: routes
|
||||||
validations:
|
validations:
|
||||||
|
|||||||
2
.github/ISSUE_TEMPLATE/bug_report_zh.yml
vendored
2
.github/ISSUE_TEMPLATE/bug_report_zh.yml
vendored
@@ -13,7 +13,7 @@ body:
|
|||||||
id: routes
|
id: routes
|
||||||
attributes:
|
attributes:
|
||||||
label: 路由地址
|
label: 路由地址
|
||||||
description: 不包含参数,复制文档路由参数,一行一个,不要重复
|
description: 不包含参数,复制文档路由参数,一行一个,不要重复。如果和路由没有关系,请写`NOROUTE`
|
||||||
placeholder: /rsshub/someroute/:type?
|
placeholder: /rsshub/someroute/:type?
|
||||||
render: routes
|
render: routes
|
||||||
validations:
|
validations:
|
||||||
|
|||||||
@@ -1,115 +1,117 @@
|
|||||||
const unified = require('unified')
|
const unified = require('unified');
|
||||||
const parse = require('remark-parse')
|
const parse = require('remark-parse');
|
||||||
const got = require('got')
|
const got = require('got');
|
||||||
|
|
||||||
// @TODO maybe we could use label or better way to separate bug/feature stuff
|
// @TODO maybe we could use label or better way to separate bug/feature stuff
|
||||||
const matchTitle = ["路由地址", "Routes"]
|
const matchTitle = ['路由地址', 'Routes'];
|
||||||
const maintainerURL = "https://raw.githubusercontent.com/DIYgod/RSSHub/gh-pages/build/maintainer.json";
|
const maintainerURL = 'https://raw.githubusercontent.com/DIYgod/RSSHub/gh-pages/build/maintainer.json';
|
||||||
const successTag = 'Bug Ping: Pinged';
|
const successTag = 'Bug Ping: Pinged';
|
||||||
const parseFailure = 'Bug Ping: Parse Failure'
|
const parseFailure = 'Bug Ping: Parse Failure';
|
||||||
const failTag = 'Bug Ping: Not Found'
|
const failTag = 'Bug Ping: Not Found';
|
||||||
const ignoreUsername = new Set([]); // Wrap user who don't want to be pinged.
|
const ignoreUsername = new Set([]); // Wrap user who don't want to be pinged.
|
||||||
|
|
||||||
async function parseBodyRoutes(body, core) {
|
async function parseBodyRoutes(body, core) {
|
||||||
const ast = await unified().use(parse).parse(body)
|
const ast = await unified().use(parse).parse(body);
|
||||||
|
|
||||||
// Is this a bug report?
|
// Is this a bug report?
|
||||||
const title = ast.children[0].children[0].value.trim()
|
const title = ast.children[0].children[0].value.trim();
|
||||||
core.debug(`title: ${title}`);
|
core.debug(`title: ${title}`);
|
||||||
if (!matchTitle.some((ele) => ele.localeCompare(title) === 0)) {
|
if (!matchTitle.some((ele) => ele.localeCompare(title) === 0)) {
|
||||||
return null
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
const routes = ast.children[1].value
|
const routes = ast.children[1].value.trim();
|
||||||
core.debug(`routes: ${JSON.stringify(routes)}`);
|
core.debug(`routes: ${JSON.stringify(routes)}`);
|
||||||
|
if (routes.localeCompare('NOROUTE') === 0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
if (routes) {
|
if (routes) {
|
||||||
const dedup = [...new Set(routes.trim().split(/\r?\n/).filter(n => n))]
|
const dedup = [...new Set(routes.split(/\r?\n/).filter((n) => n))];
|
||||||
if (dedup.length !== routes.length) {
|
if (dedup.length !== routes.length) {
|
||||||
core.warning("Duplicate Detected.")
|
core.warning('Duplicate Detected.');
|
||||||
}
|
}
|
||||||
core.debug(dedup)
|
core.debug(dedup);
|
||||||
return dedup
|
return dedup;
|
||||||
}
|
}
|
||||||
|
|
||||||
throw "unable to parse body: routes does not exist"
|
throw 'unable to parse body: routes does not exist';
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getMaintainersByRoutes(routes, core) {
|
async function getMaintainersByRoutes(routes, core) {
|
||||||
const maintainers = await got(maintainerURL).json()
|
const maintainers = await got(maintainerURL).json();
|
||||||
|
|
||||||
return routes.map(e => {
|
return routes.map((e) => {
|
||||||
const m = maintainers[e]
|
const m = maintainers[e];
|
||||||
if (m !== undefined) {
|
if (m === undefined) {
|
||||||
return m
|
core.warning(`Route ${e} does not match any maintainer`);
|
||||||
}
|
}
|
||||||
core.warning(`Route ${e} does not match any maintainer`)
|
|
||||||
})
|
return m;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = async ({ github, context, core }) => {
|
module.exports = async ({ github, context, core }) => {
|
||||||
const body = context.payload.issue.body
|
const body = context.payload.issue.body;
|
||||||
const issue_facts = {
|
const issue_facts = {
|
||||||
issue_number: context.issue.number,
|
issue_number: context.issue.number,
|
||||||
owner: context.repo.owner,
|
owner: context.repo.owner,
|
||||||
repo: context.repo.repo,
|
repo: context.repo.repo,
|
||||||
};
|
};
|
||||||
|
|
||||||
const routes = await parseBodyRoutes(body, core).catch(e => {
|
const routes = await parseBodyRoutes(body, core).catch((e) => {
|
||||||
core.warning(e)
|
core.warning(e);
|
||||||
})
|
});
|
||||||
|
|
||||||
if (routes === null) {
|
if (routes === null) {
|
||||||
return // Not a bug
|
return; // Not a bug, or skipped
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (routes === undefined) {
|
if (routes === undefined) {
|
||||||
await github.rest.issues
|
await github.rest.issues
|
||||||
.addLabels({
|
.addLabels({
|
||||||
...issue_facts,
|
...issue_facts,
|
||||||
labels: [
|
labels: [parseFailure],
|
||||||
parseFailure
|
|
||||||
],
|
|
||||||
})
|
})
|
||||||
.catch((e) => {
|
.catch((e) => {
|
||||||
core.warning(e);
|
core.warning(e);
|
||||||
});
|
});
|
||||||
return
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const maintainers = await getMaintainersByRoutes(routes, core)
|
const maintainers = await getMaintainersByRoutes(routes, core);
|
||||||
|
|
||||||
let successCount = 0
|
let successCount = 0;
|
||||||
let comments = "##### Trying to find maintainers: \n\n"
|
let comments = '##### Trying to find maintainers: \n\n';
|
||||||
|
|
||||||
for (let i = 0; i < routes.length; i++) {
|
for (let i = 0; i < routes.length; i++) {
|
||||||
const route = routes[i]
|
const route = routes[i];
|
||||||
const main = maintainers[i]
|
const main = maintainers[i];
|
||||||
if (main === undefined) {
|
if (main === undefined) {
|
||||||
comments += `- \`${route}\`: **Not found in list**\n`
|
comments += `- \`${route}\`: **Not found in list**\n`;
|
||||||
continue
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (main.length === 0) {
|
if (main.length === 0) {
|
||||||
comments += `- \`${route}\`: No maintainer listed, possibly v1 route or misconfigure\n`
|
comments += `- \`${route}\`: No maintainer listed, possibly v1 route or misconfigure\n`;
|
||||||
successCount += 1
|
successCount += 1;
|
||||||
continue
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (main.length > 0) {
|
if (main.length > 0) {
|
||||||
const pingStr = main.map(e => {
|
const pingStr = main
|
||||||
|
.map((e) => {
|
||||||
if (e in ignoreUsername) {
|
if (e in ignoreUsername) {
|
||||||
return `\`@${e}\`` // Wrap with code so no mention will be sent
|
return `\`@${e}\``; // Wrap with code so no mention will be sent
|
||||||
}
|
}
|
||||||
return `@${e}`
|
return `@${e}`;
|
||||||
}).join(" ")
|
})
|
||||||
comments += `- \`${route}\`: ${pingStr}\n`
|
.join(' ');
|
||||||
successCount += 1
|
comments += `- \`${route}\`: ${pingStr}\n`;
|
||||||
|
successCount += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Send out notification
|
// Send out notification
|
||||||
await github.rest.issues
|
await github.rest.issues
|
||||||
.createComment({
|
.createComment({
|
||||||
@@ -128,9 +130,7 @@ module.exports = async ({ github, context, core }) => {
|
|||||||
await github.rest.issues
|
await github.rest.issues
|
||||||
.addLabels({
|
.addLabels({
|
||||||
...issue_facts,
|
...issue_facts,
|
||||||
labels: [
|
labels: [successTag],
|
||||||
successTag
|
|
||||||
],
|
|
||||||
})
|
})
|
||||||
.catch((e) => {
|
.catch((e) => {
|
||||||
core.warning(e);
|
core.warning(e);
|
||||||
@@ -139,9 +139,7 @@ module.exports = async ({ github, context, core }) => {
|
|||||||
await github.rest.issues
|
await github.rest.issues
|
||||||
.addLabels({
|
.addLabels({
|
||||||
...issue_facts,
|
...issue_facts,
|
||||||
labels: [
|
labels: [failTag],
|
||||||
failTag
|
|
||||||
],
|
|
||||||
})
|
})
|
||||||
.catch((e) => {
|
.catch((e) => {
|
||||||
core.warning(e);
|
core.warning(e);
|
||||||
@@ -152,9 +150,7 @@ module.exports = async ({ github, context, core }) => {
|
|||||||
await github.rest.issues
|
await github.rest.issues
|
||||||
.addLabels({
|
.addLabels({
|
||||||
...issue_facts,
|
...issue_facts,
|
||||||
labels: [
|
labels: [`Count: ${successCount}/${routes.length}`],
|
||||||
`Count: ${successCount}/${routes.length}`
|
|
||||||
],
|
|
||||||
})
|
})
|
||||||
.catch((e) => {
|
.catch((e) => {
|
||||||
core.warning(e);
|
core.warning(e);
|
||||||
|
|||||||
Reference in New Issue
Block a user