commit 64ff14beb9c9aab0b53c45e13ec93c662c489a83
parent 88b3155208ee41ccd97a7771a670328a91685f81
Author: iostpa <iostpa@iostpa.com>
Date: Sat, 6 Jun 2026 13:06:49 +0300
Add prettier
Diffstat:
10 files changed, 396 insertions(+), 153 deletions(-)
diff --git a/.prettierignore b/.prettierignore
@@ -0,0 +1,16 @@
+Dockerfile*
+docker-compose*
+.dockerignore
+.git
+.gitignore
+README.me
+LICENSE
+.env.example
+.github
+CONTRIBUTING.md
+package.json
+bun.lock
+src/message
+README.md
+eslint.config.js
+prettier.config.js+
\ No newline at end of file
diff --git a/bun.lock b/bun.lock
@@ -19,6 +19,7 @@
"@eslint/js": "^10.0.1",
"eslint": "^10.4.1",
"globals": "^17.6.0",
+ "prettier": "3.8.3",
"smee-client": "^5.0.0",
},
},
@@ -324,6 +325,8 @@
"prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="],
+ "prettier": ["prettier@3.8.3", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw=="],
+
"process-warning": ["process-warning@5.0.0", "", {}, "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA=="],
"punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="],
diff --git a/package.json b/package.json
@@ -13,6 +13,7 @@
"@eslint/js": "^10.0.1",
"eslint": "^10.4.1",
"globals": "^17.6.0",
+ "prettier": "3.8.3",
"smee-client": "^5.0.0"
},
"dependencies": {
diff --git a/prettier.config.js b/prettier.config.js
@@ -0,0 +1,12 @@
+/**
+ * @see https://prettier.io/docs/configuration
+ * @type {import("prettier").Config}
+ */
+const config = {
+ trailingComma: 'es5',
+ semi: true,
+ tabWidth: 4,
+ singleQuote: true,
+};
+
+export default config;
diff --git a/src/index.js b/src/index.js
@@ -21,11 +21,13 @@ dotenv.config();
const sentryDsn = process.env.SENTRY;
const appId = process.env.APP_ID;
const installationId = process.env.INSTALLATION_ID;
-const privateKey = fs.readFileSync(path.resolve(process.env.PRIVATE_KEY_PATH), 'utf8');
+const privateKey = fs.readFileSync(
+ path.resolve(process.env.PRIVATE_KEY_PATH),
+ 'utf8'
+);
const secret = process.env.WEBHOOK_SECRET;
export const numberOfDays = 3;
-
Sentry.init({
dsn: sentryDsn,
// Tracing
@@ -44,7 +46,7 @@ export const pool = mariadb.createPool({
port: process.env.SQL_PORT,
database: process.env.SQL_DB_NAME,
ssl: false,
- connectionLimit: 5
+ connectionLimit: 5,
});
// Create an authenticated Octokit client authenticated as a GitHub App
@@ -52,8 +54,8 @@ const app = new App({
appId,
privateKey,
webhooks: {
- secret
- }
+ secret,
+ },
});
const appOctokit = await app.getInstallationOctokit(installationId);
@@ -77,7 +79,6 @@ const { data } = await app.octokit.request('/app');
// https://github.com/octokit/core.js#logging
app.octokit.log.debug(`Authenticated as '${data.name}'`);
-
// Check if a low priority pull request has been in the database for over 3 days
let job = new CronJob(
'0 * * * *', // cronTime
@@ -92,14 +93,21 @@ let job = new CronJob(
let parsed = JSON.parse(resJson);
for (let i in parsed) {
if (getNumberOfDays(parsed[i].time, date) >= numberOfDays) {
- await conn.query(`DELETE FROM LIST WHERE time=(?)`, [parsed[i].time]);
- await appOctokit.request('DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}', {
- owner: parsed[i].repoowner,
- repo: parsed[i].repo,
- issue_number: parsed[i].prnumber,
- name: "status: low priority",
- });
- console.log(`Removed #${parsed[i].prnumber} from the database since it has existed for 3 or more days.`);
+ await conn.query(`DELETE FROM LIST WHERE time=(?)`, [
+ parsed[i].time,
+ ]);
+ await appOctokit.request(
+ 'DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}',
+ {
+ owner: parsed[i].repoowner,
+ repo: parsed[i].repo,
+ issue_number: parsed[i].prnumber,
+ name: 'status: low priority',
+ }
+ );
+ console.log(
+ `Removed #${parsed[i].prnumber} from the database since it has existed for 3 or more days.`
+ );
}
}
} else if (resJson === '[]') {
@@ -109,7 +117,9 @@ let job = new CronJob(
Sentry.captureException(error);
fastify.log.error(error);
if (error.response) {
- console.error(`Error! Status: ${error.response.status}. Message: ${error.response.data.message}`);
+ console.error(
+ `Error! Status: ${error.response.status}. Message: ${error.response.data.message}`
+ );
} else {
console.error(error);
}
@@ -124,12 +134,22 @@ let job = new CronJob(
app.webhooks.on('pull_request.opened', async ({ payload }) => {
try {
- await opened(appOctokit, payload.repository.owner.login, payload.repository.name, payload.repository.full_name, payload.pull_request.number, payload.pull_request.user.login, payload.pull_request.draft);
+ await opened(
+ appOctokit,
+ payload.repository.owner.login,
+ payload.repository.name,
+ payload.repository.full_name,
+ payload.pull_request.number,
+ payload.pull_request.user.login,
+ payload.pull_request.draft
+ );
} catch (error) {
Sentry.captureException(error);
fastify.log.error(error);
if (error.response) {
- console.error(`Error! Status: ${error.response.status}. Message: ${error.response.data.message}`);
+ console.error(
+ `Error! Status: ${error.response.status}. Message: ${error.response.data.message}`
+ );
} else {
console.error(error);
}
@@ -138,14 +158,27 @@ app.webhooks.on('pull_request.opened', async ({ payload }) => {
// https://github.com/octokit/webhooks.js/?tab=readme-ov-file#webhook-events
app.webhooks.on('pull_request.closed', async ({ payload }) => {
- console.log(`Received a closed pull request event for #${payload.pull_request.number} on https://github.com/${payload.repository.full_name}`);
+ console.log(
+ `Received a closed pull request event for #${payload.pull_request.number} on https://github.com/${payload.repository.full_name}`
+ );
try {
- await closed(appOctokit, payload.pull_request.merged, payload.repository.owner.login, payload.repository.name, payload.repository.full_name, payload.pull_request.number, payload.pull_request.user.login, payload.sender.login);
+ await closed(
+ appOctokit,
+ payload.pull_request.merged,
+ payload.repository.owner.login,
+ payload.repository.name,
+ payload.repository.full_name,
+ payload.pull_request.number,
+ payload.pull_request.user.login,
+ payload.sender.login
+ );
} catch (error) {
Sentry.captureException(error);
fastify.log.error(error);
if (error.response) {
- console.error(`Error! Status: ${error.response.status}. Message: ${error.response.data.message}`);
+ console.error(
+ `Error! Status: ${error.response.status}. Message: ${error.response.data.message}`
+ );
} else {
console.error(error);
}
@@ -155,12 +188,23 @@ app.webhooks.on('pull_request.closed', async ({ payload }) => {
// Label system
app.webhooks.on('pull_request.labeled', async ({ payload }) => {
try {
- await labeled(appOctokit, payload.label.name, payload.repository.owner.login, payload.repository.name, payload.repository.full_name, payload.pull_request.number, payload.pull_request.updated_at, payload.pull_request.user.login);
+ await labeled(
+ appOctokit,
+ payload.label.name,
+ payload.repository.owner.login,
+ payload.repository.name,
+ payload.repository.full_name,
+ payload.pull_request.number,
+ payload.pull_request.updated_at,
+ payload.pull_request.user.login
+ );
} catch (error) {
Sentry.captureException(error);
fastify.log.error(error);
if (error.response) {
- console.error(`Error! Status: ${error.response.status}. Message: ${error.response.data.message}`);
+ console.error(
+ `Error! Status: ${error.response.status}. Message: ${error.response.data.message}`
+ );
} else {
console.error(error);
}
@@ -169,25 +213,31 @@ app.webhooks.on('pull_request.labeled', async ({ payload }) => {
app.webhooks.on('pull_request.unlabeled', async ({ payload }) => {
try {
- await unlabeled(payload.label.name, payload.pull_request.user.login, payload.pull_request.number, payload.repository.full_name);
+ await unlabeled(
+ payload.label.name,
+ payload.pull_request.user.login,
+ payload.pull_request.number,
+ payload.repository.full_name
+ );
} catch (error) {
Sentry.captureException(error);
fastify.log.error(error);
if (error.response) {
- console.error(`Error! Status: ${error.response.status}. Message: ${error.response.data.message}`);
+ console.error(
+ `Error! Status: ${error.response.status}. Message: ${error.response.data.message}`
+ );
} else {
console.error(error);
}
}
});
-
// Handle errors
app.webhooks.onError((error) => {
Sentry.captureException(error);
fastify.log.error(error);
if (error.name === 'AggregateError') {
- // Log Secret verification errors
+ // Log Secret verification errors
console.log(`Error processing request: ${error.event}`);
} else {
console.log(error);
@@ -204,7 +254,7 @@ const localWebhookUrl = `http://${host}:${port}${webhookPath}`;
const middleware = createNodeMiddleware(app.webhooks, { path: webhookPath });
const fastify = Fastify({
- logger: false
+ logger: false,
});
await fastify.register(middie);
fastify.use(middleware);
@@ -221,4 +271,4 @@ http.createServer(middleware).listen(port, () => {
console.log(`Server is listening for events at: ${localWebhookUrl}`)
console.log('Press Ctrl + C to quit.')
})
-*/-
\ No newline at end of file
+*/
diff --git a/src/tools/numberofdays.js b/src/tools/numberofdays.js
@@ -12,4 +12,4 @@ export function getNumberOfDays(start, end) {
const diffInDays = Math.round(diffInTime / oneDay);
return diffInDays;
-};-
\ No newline at end of file
+}
diff --git a/src/webhooks/closed.js b/src/webhooks/closed.js
@@ -2,81 +2,131 @@ import { pool } from '../index';
import fs from 'fs';
import path from 'path';
-const ignoreLabels = ["maintainer"];
-const mergedPRs = fs.readFileSync(path.join(__dirname, '../message/merged.md'), 'utf8');
-const unremovableLabels = ["maintainer", "ci: bypass-owner-check", "no-stale", "r: william"];
-const reviewerUsernames = ["DEV-DIBSTER", "dragsbruh", "iostpa", "notamitgamer", "omsenjalia", "orangci", "satr14washere", "Stef-00012", "STICKnoLOGIC", "wdhdev", "Yunexiz"];
+const ignoreLabels = ['maintainer'];
+const mergedPRs = fs.readFileSync(
+ path.join(__dirname, '../message/merged.md'),
+ 'utf8'
+);
+const unremovableLabels = [
+ 'maintainer',
+ 'ci: bypass-owner-check',
+ 'no-stale',
+ 'r: william',
+];
+const reviewerUsernames = [
+ 'DEV-DIBSTER',
+ 'dragsbruh',
+ 'iostpa',
+ 'notamitgamer',
+ 'omsenjalia',
+ 'orangci',
+ 'satr14washere',
+ 'Stef-00012',
+ 'STICKnoLOGIC',
+ 'wdhdev',
+ 'Yunexiz',
+];
-export async function closed(appOctokit, prMerged, repoOwner, repoName, repoFullName, prNumber, prUsername, prSender) {
+export async function closed(
+ appOctokit,
+ prMerged,
+ repoOwner,
+ repoName,
+ repoFullName,
+ prNumber,
+ prUsername,
+ prSender
+) {
let conn;
try {
if (prMerged === true) {
const labels = await appOctokit.rest.issues.listLabelsOnIssue({
owner: repoOwner,
- repo: repoName,
- issue_number: prNumber
+ repo: repoName,
+ issue_number: prNumber,
});
const allLabels = labels.data.map((label) => label.name);
if (ignoreLabels.some((label) => allLabels.includes(label))) {
return;
- }
+ }
await appOctokit.rest.issues.createComment({
owner: repoOwner,
repo: repoName,
issue_number: prNumber,
- body: mergedPRs
+ body: mergedPRs,
});
- console.log(`Sent a merged message to #${prNumber} on https://github.com/${repoFullName}`);
-
+ console.log(
+ `Sent a merged message to #${prNumber} on https://github.com/${repoFullName}`
+ );
+
// remove almost all labels if there are any
const listOfLabels = [];
- const data = await appOctokit.request('GET /repos/{owner}/{repo}/pulls/{pull_number}', {
- owner: repoOwner,
- repo: repoName,
- pull_number: prNumber
- });
+ const data = await appOctokit.request(
+ 'GET /repos/{owner}/{repo}/pulls/{pull_number}',
+ {
+ owner: repoOwner,
+ repo: repoName,
+ pull_number: prNumber,
+ }
+ );
const labelData = data.data.labels;
for (let i in labelData) {
if (labelData[i].name) {
listOfLabels.push(labelData[i].name);
}
- }
+ }
for (let i in listOfLabels) {
if (!listOfLabels.includes(unremovableLabels)) {
- await appOctokit.request('DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}', {
- owner: repoOwner,
- repo: repoName,
- issue_number: prNumber,
- name: listOfLabels[i],
- });
- } else if (listOfLabels[i] == "status: low priority") {
+ await appOctokit.request(
+ 'DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}',
+ {
+ owner: repoOwner,
+ repo: repoName,
+ issue_number: prNumber,
+ name: listOfLabels[i],
+ }
+ );
+ } else if (listOfLabels[i] == 'status: low priority') {
return;
} else if (unremovableLabels.includes(listOfLabels[i])) {
return;
}
}
- console.log(`Removed all labels from #${prNumber} on https://github.com/${repoFullName}`);
+ console.log(
+ `Removed all labels from #${prNumber} on https://github.com/${repoFullName}`
+ );
} else {
conn = await pool.getConnection();
- let res = await conn.query(`SELECT * FROM LIST WHERE username=(?)`, [prUsername]);
+ let res = await conn.query(
+ `SELECT * FROM LIST WHERE username=(?)`,
+ [prUsername]
+ );
let resJson = JSON.stringify(res);
- if (resJson !== "[]") {
+ if (resJson !== '[]') {
let parsed = JSON.parse(resJson);
if (reviewerUsernames.includes(prSender)) {
- res = await conn.query("DELETE FROM LIST WHERE username=(?)", [parsed[0].username]);
- await appOctokit.request('DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}', {
- owner: repoOwner,
- repo: repoName,
- issue_number: prNumber,
- name: "status: low priority",
- });
- console.log(`Removed #${prNumber} from https://github.com/${repoFullName} from the low priority database as well as the label.`);
+ res = await conn.query(
+ 'DELETE FROM LIST WHERE username=(?)',
+ [parsed[0].username]
+ );
+ await appOctokit.request(
+ 'DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}',
+ {
+ owner: repoOwner,
+ repo: repoName,
+ issue_number: prNumber,
+ name: 'status: low priority',
+ }
+ );
+ console.log(
+ `Removed #${prNumber} from https://github.com/${repoFullName} from the low priority database as well as the label.`
+ );
}
}
- };
+ }
} finally {
if (conn) conn.end;
}
-}-
\ No newline at end of file
+}
diff --git a/src/webhooks/labeled.js b/src/webhooks/labeled.js
@@ -2,28 +2,59 @@ import { pool } from '../index';
import fs from 'fs';
import path from 'path';
-const reasonLabels = ["reason: abuse risk", "reason: commercial usage", "reason: impersonation", "reason: inaccessible website", "reason: incomplete pr", "reason: incomplete website", "reason: invalid file", "reason: invalid records", "reason: invalid social", "reason: merge conflict", "reason: not dev related", "reason: nsfw", "reason: other", "reason: unauthorized", "reason: incompatible records"];
-const lowPriorityMessage = fs.readFileSync(path.join(__dirname, '../message/label/lowpriority.md'), 'utf8');
+const reasonLabels = [
+ 'reason: abuse risk',
+ 'reason: commercial usage',
+ 'reason: impersonation',
+ 'reason: inaccessible website',
+ 'reason: incomplete pr',
+ 'reason: incomplete website',
+ 'reason: invalid file',
+ 'reason: invalid records',
+ 'reason: invalid social',
+ 'reason: merge conflict',
+ 'reason: not dev related',
+ 'reason: nsfw',
+ 'reason: other',
+ 'reason: unauthorized',
+ 'reason: incompatible records',
+];
+const lowPriorityMessage = fs.readFileSync(
+ path.join(__dirname, '../message/label/lowpriority.md'),
+ 'utf8'
+);
-export async function labeled(appOctokit, prLabelName, repoOwner, repoName, repoFullName, prNumber, prUpdatedAt, prUsername) {
+export async function labeled(
+ appOctokit,
+ prLabelName,
+ repoOwner,
+ repoName,
+ repoFullName,
+ prNumber,
+ prUpdatedAt,
+ prUsername
+) {
let denied, invalid, lowpriority;
- if (prLabelName === "status: denied") {
+ if (prLabelName === 'status: denied') {
denied = true;
- } else if (prLabelName === "status: invalid") {
+ } else if (prLabelName === 'status: invalid') {
invalid = true;
- } else if (prLabelName === "status: low priority") {
+ } else if (prLabelName === 'status: low priority') {
lowpriority = true;
}
if (denied === true || invalid === true) {
const listOfLabels = [];
// timeout so that it creates a little time window for the maintainer to add the rest of the labels
- await new Promise(resolve => setTimeout(resolve, 5000));
- const data = await appOctokit.request('GET /repos/{owner}/{repo}/pulls/{pull_number}', {
- owner: repoOwner,
- repo: repoName,
- pull_number: prNumber
- });
+ await new Promise((resolve) => setTimeout(resolve, 5000));
+ const data = await appOctokit.request(
+ 'GET /repos/{owner}/{repo}/pulls/{pull_number}',
+ {
+ owner: repoOwner,
+ repo: repoName,
+ pull_number: prNumber,
+ }
+ );
const labelData = data.data.labels;
for (let i in labelData) {
if (labelData[i].name) {
@@ -35,20 +66,31 @@ export async function labeled(appOctokit, prLabelName, repoOwner, repoName, repo
const allMessages = [];
for (let i in listOfLabels) {
if (reasonLabels.includes(listOfLabels[i])) {
- let initialReason = listOfLabels[i].toString().replace(/reason:\s/i, '');
+ let initialReason = listOfLabels[i]
+ .toString()
+ .replace(/reason:\s/i, '');
let finalReason = initialReason.replace(/\s+/g, '-');
- let message = fs.readFileSync(path.join(__dirname, `../message/label/${finalReason}.md`), 'utf8');
+ let message = fs.readFileSync(
+ path.join(__dirname, `../message/label/${finalReason}.md`),
+ 'utf8'
+ );
allMessages.push(message);
- } else if (listOfLabels[i] === "status: needs preview") {
- let message = fs.readFileSync(path.join(__dirname, `../message/label/needs-preview.md`), 'utf8');
+ } else if (listOfLabels[i] === 'status: needs preview') {
+ let message = fs.readFileSync(
+ path.join(__dirname, `../message/label/needs-preview.md`),
+ 'utf8'
+ );
allMessages.push(message);
- };
+ }
}
const labelMessages = allMessages.join('\n\n');
let body;
if (!labelMessages.length) {
- body = fs.readFileSync(path.join(__dirname, `../message/invalidnolabel.md`), 'utf8');
+ body = fs.readFileSync(
+ path.join(__dirname, `../message/invalidnolabel.md`),
+ 'utf8'
+ );
} else {
body = `
# Invalid Pull Request
@@ -63,42 +105,62 @@ ${labelMessages}
If you need any help, please create an issue or ask our team in the [Discord server](https://discord.gg/is-a-dev-830872854677422150)
`;
- };
+ }
await appOctokit.rest.issues.createComment({
owner: repoOwner,
repo: repoName,
issue_number: prNumber,
- body: body
+ body: body,
});
- console.log(`Sent reason messages at #${prNumber} from https://github.com/${repoFullName}`);
+ console.log(
+ `Sent reason messages at #${prNumber} from https://github.com/${repoFullName}`
+ );
if (denied === true) {
- await appOctokit.request('PATCH /repos/{owner}/{repo}/pulls/{pull_number}', {
- owner: repoOwner,
- repo: repoName,
- pull_number: prNumber,
- state: 'closed',
- });
- console.log(`Closed pull request at #${prNumber} from https://github.com/${repoFullName}`);
- };
+ await appOctokit.request(
+ 'PATCH /repos/{owner}/{repo}/pulls/{pull_number}',
+ {
+ owner: repoOwner,
+ repo: repoName,
+ pull_number: prNumber,
+ state: 'closed',
+ }
+ );
+ console.log(
+ `Closed pull request at #${prNumber} from https://github.com/${repoFullName}`
+ );
+ }
} else if (lowpriority === true) {
let conn;
try {
conn = await pool.getConnection();
- let res = await conn.query(`SELECT * FROM LIST WHERE username=(?)`, [prUsername]);
+ let res = await conn.query(
+ `SELECT * FROM LIST WHERE username=(?)`,
+ [prUsername]
+ );
let resJson = JSON.stringify(res);
- if (resJson === "[]") {
+ if (resJson === '[]') {
await appOctokit.rest.issues.createComment({
owner: repoOwner,
repo: repoName,
issue_number: prNumber,
- body: lowPriorityMessage
+ body: lowPriorityMessage,
});
- console.log(`Sent low priority message to #${prNumber} from https://github.com/${repoFullName}`);
- await conn.query("INSERT INTO LIST VALUES (?, ?, ?, ?, ?)", [prUsername, prNumber, prUpdatedAt, repoOwner, repoName]);
- console.log(`Logged #${prNumber} from https://github.com/${repoFullName} to the low priority database.`);
+ console.log(
+ `Sent low priority message to #${prNumber} from https://github.com/${repoFullName}`
+ );
+ await conn.query('INSERT INTO LIST VALUES (?, ?, ?, ?, ?)', [
+ prUsername,
+ prNumber,
+ prUpdatedAt,
+ repoOwner,
+ repoName,
+ ]);
+ console.log(
+ `Logged #${prNumber} from https://github.com/${repoFullName} to the low priority database.`
+ );
}
} finally {
if (conn) conn.end();
}
}
-}-
\ No newline at end of file
+}
diff --git a/src/webhooks/opened.js b/src/webhooks/opened.js
@@ -3,50 +3,78 @@ import { getNumberOfDays } from '../tools/numberofdays';
import fs from 'fs';
import path from 'path';
-const ignoreLabels = ["maintainer"];
-const newPRs = fs.readFileSync(path.join(__dirname, '../message/opened.md'), 'utf8');
-const draftPRs = fs.readFileSync(path.join(__dirname, '../message/draft.md'), 'utf8');
+const ignoreLabels = ['maintainer'];
+const newPRs = fs.readFileSync(
+ path.join(__dirname, '../message/opened.md'),
+ 'utf8'
+);
+const draftPRs = fs.readFileSync(
+ path.join(__dirname, '../message/draft.md'),
+ 'utf8'
+);
// https://docs.github.com/en/webhooks/webhook-events-and-payloads#pull_request
-export async function opened(appOctokit, repoOwner, repoName, repoFullName, prNumber, prCreatedAt, prUsername, prDraft) {
- console.log(`Received a open pull request event for #${prNumber} on https://github.com/${repoFullName}`);
+export async function opened(
+ appOctokit,
+ repoOwner,
+ repoName,
+ repoFullName,
+ prNumber,
+ prCreatedAt,
+ prUsername,
+ prDraft
+) {
+ console.log(
+ `Received a open pull request event for #${prNumber} on https://github.com/${repoFullName}`
+ );
let conn;
try {
const labels = await appOctokit.rest.issues.listLabelsOnIssue({
owner: repoOwner,
- repo: repoName,
- issue_number: prNumber
+ repo: repoName,
+ issue_number: prNumber,
});
const allLabels = labels.data.map((label) => label.name);
if (ignoreLabels.some((label) => allLabels.includes(label))) {
- console.log(`#${prNumber} from https://github.com/${repoFullName} is by a maintainer, skipping pull request.`);
+ console.log(
+ `#${prNumber} from https://github.com/${repoFullName} is by a maintainer, skipping pull request.`
+ );
return;
- }
+ }
if (prDraft === true) {
await appOctokit.rest.issues.createComment({
owner: repoOwner,
repo: repoName,
issue_number: prNumber,
- body: draftPRs
+ body: draftPRs,
});
- console.log(`Sent a draft message to #${prNumber} on https://github.com/${repoFullName}`);
+ console.log(
+ `Sent a draft message to #${prNumber} on https://github.com/${repoFullName}`
+ );
} else {
await appOctokit.rest.issues.createComment({
owner: repoOwner,
repo: repoName,
issue_number: prNumber,
- body: newPRs
+ body: newPRs,
});
- console.log(`Sent a opened message to #${prNumber} on https://github.com/${repoFullName}`);
- };
+ console.log(
+ `Sent a opened message to #${prNumber} on https://github.com/${repoFullName}`
+ );
+ }
// low priority check
conn = await pool.getConnection();
- let res = await conn.query(`SELECT * FROM LIST WHERE username=(?)`, [prUsername]);
+ let res = await conn.query(`SELECT * FROM LIST WHERE username=(?)`, [
+ prUsername,
+ ]);
let resJson = JSON.stringify(res);
- if (resJson !== "[]") {
+ if (resJson !== '[]') {
let parsed = JSON.parse(resJson);
let date = new Date();
- if (parsed[0].username === prUsername && getNumberOfDays(parsed[0].time, date) <= numberOfDays) {
+ if (
+ parsed[0].username === prUsername &&
+ getNumberOfDays(parsed[0].time, date) <= numberOfDays
+ ) {
let lowPriority = `
# Low priority
@@ -54,32 +82,51 @@ You're attempting to create a new pull request to bypass the low priority label
If you think this is a mistake then please contact [iostpa](https://github.com/iostpa).
`;
- await appOctokit.request('POST /repos/{owner}/{repo}/issues/{issue_number}/labels', {
- owner: repoOwner,
- repo: repoName,
- issue_number: prNumber,
- labels: [
- 'status: low priority'
- ]
- });
+ await appOctokit.request(
+ 'POST /repos/{owner}/{repo}/issues/{issue_number}/labels',
+ {
+ owner: repoOwner,
+ repo: repoName,
+ issue_number: prNumber,
+ labels: ['status: low priority'],
+ }
+ );
await appOctokit.rest.issues.createComment({
owner: repoOwner,
repo: repoName,
issue_number: prNumber,
- body: lowPriority
- });
- await conn.query(`UPDATE LIST SET prnumber=(?) WHERE prnumber=(?)`, [prNumber, parsed[0].prnumber]);
- await conn.query(`UPDATE LIST SET time=(?) WHERE prnumber=(?)`, [prCreatedAt, parsed[0].prnumber]);
- console.log(`Auto-added, replaced with new PR number and sent low priority message to #${prNumber} on https://github.com/${repoFullName} because it was found in the database.`);
- } else if (parsed[0].username === prUsername && getNumberOfDays(parsed[0].time, date) >= numberOfDays) {
- await appOctokit.request('DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}', {
- owner: repoOwner,
- repo: repoName,
- issue_number: prNumber,
- name: "status: low priority",
+ body: lowPriority,
});
- res = await conn.query("DELETE FROM LIST WHERE username=(?)", [parsed[0].username]);
- console.log(`Removed #${prNumber} from https://github.com/${repoFullName} from the low priority database as well as the label.`);
+ await conn.query(
+ `UPDATE LIST SET prnumber=(?) WHERE prnumber=(?)`,
+ [prNumber, parsed[0].prnumber]
+ );
+ await conn.query(
+ `UPDATE LIST SET time=(?) WHERE prnumber=(?)`,
+ [prCreatedAt, parsed[0].prnumber]
+ );
+ console.log(
+ `Auto-added, replaced with new PR number and sent low priority message to #${prNumber} on https://github.com/${repoFullName} because it was found in the database.`
+ );
+ } else if (
+ parsed[0].username === prUsername &&
+ getNumberOfDays(parsed[0].time, date) >= numberOfDays
+ ) {
+ await appOctokit.request(
+ 'DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}',
+ {
+ owner: repoOwner,
+ repo: repoName,
+ issue_number: prNumber,
+ name: 'status: low priority',
+ }
+ );
+ res = await conn.query('DELETE FROM LIST WHERE username=(?)', [
+ parsed[0].username,
+ ]);
+ console.log(
+ `Removed #${prNumber} from https://github.com/${repoFullName} from the low priority database as well as the label.`
+ );
}
} else if (resJson === '[]') {
return;
@@ -87,4 +134,4 @@ If you think this is a mistake then please contact [iostpa](https://github.com/i
} finally {
if (conn) conn.end();
}
-}-
\ No newline at end of file
+}
diff --git a/src/webhooks/unlabeled.js b/src/webhooks/unlabeled.js
@@ -3,13 +3,20 @@ import { pool } from '../index';
export async function unlabeled(labelName, username, prNumber, repoFullName) {
let conn;
try {
- if (labelName === "status: low priority") {
+ if (labelName === 'status: low priority') {
conn = await pool.getConnection();
- let res = await conn.query(`SELECT * FROM LIST WHERE username=(?)`, [username]);
+ let res = await conn.query(
+ `SELECT * FROM LIST WHERE username=(?)`,
+ [username]
+ );
let resJson = JSON.stringify(res);
- if (resJson !== "[]") {
- res = await conn.query("DELETE FROM LIST WHERE username=(?)", [username]);
- console.log(`Removed #${prNumber} from https://github.com/${repoFullName} from the low priority database.`);
+ if (resJson !== '[]') {
+ res = await conn.query('DELETE FROM LIST WHERE username=(?)', [
+ username,
+ ]);
+ console.log(
+ `Removed #${prNumber} from https://github.com/${repoFullName} from the low priority database.`
+ );
} else {
return;
}
@@ -17,4 +24,4 @@ export async function unlabeled(labelName, username, prNumber, repoFullName) {
} finally {
if (conn) conn.end();
}
-}-
\ No newline at end of file
+}