Skip to content

Commit 8705223

Browse files
committed
feat: add full-sync and manual-process
1 parent ad156e1 commit 8705223

File tree

3 files changed

+101
-0
lines changed

3 files changed

+101
-0
lines changed

deno.jsonc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
"dev": "deno run --env-file --allow-all src/index.ts",
44
"dev:skip-full-sync": "deno task dev --skip-full-sync",
55
"worker": "deno run --env-file --allow-all src/worker.ts",
6+
"full-sync": "deno run --env-file --allow-all scripts/full-sync.ts",
7+
"manual-process": "deno run --env-file --allow-all scripts/manual-process.ts",
68
"hook": "deno run --allow-read --allow-run --allow-write https://deno.land/x/[email protected]/mod.ts",
79
"install-hooks": "deno task hook install",
810
"test": "deno test --allow-net --allow-env --allow-read",

scripts/full-sync.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { connectMongoDB, disconnectMongoDB } from "@/src/configs/database.ts";
2+
import { fullSync } from "@wei/probot-scheduler";
3+
import { createProbot } from "probot";
4+
import logger from "@/src/utils/logger.ts";
5+
6+
async function main() {
7+
let exitCode = 0;
8+
9+
try {
10+
await connectMongoDB();
11+
12+
const probot = createProbot({ overrides: { log: logger } });
13+
await fullSync(probot, null);
14+
} catch (error) {
15+
logger.error(error, "Error during full sync");
16+
exitCode = 1;
17+
} finally {
18+
await disconnectMongoDB();
19+
Deno.exit(exitCode);
20+
}
21+
}
22+
23+
if (import.meta.main) {
24+
await main();
25+
}

scripts/manual-process.ts

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
import { connectMongoDB, disconnectMongoDB } from "@/src/configs/database.ts";
2+
import { JobPriority, RepositoryModel } from "@wei/probot-scheduler";
3+
import { createProbot } from "probot";
4+
import logger from "@/src/utils/logger.ts";
5+
import { getPullConfig } from "@/src/utils/get-pull-config.ts";
6+
import { Pull } from "@/src/processor/pull.ts";
7+
8+
async function main(full_name: string) {
9+
let exitCode = 0;
10+
11+
try {
12+
await connectMongoDB();
13+
14+
logger.info(`🏃 Processing repo job ${full_name}`);
15+
16+
try {
17+
// Get Octokit
18+
const probot = createProbot({ overrides: { log: logger } });
19+
20+
const repoRecord = await RepositoryModel.findOne({ full_name });
21+
22+
if (!repoRecord) {
23+
logger.error({ full_name }, `❌ Repo record not found`);
24+
throw new Error(`❌ Repo record not found`);
25+
}
26+
27+
const { installation_id, owner: { login: owner }, name: repo } =
28+
repoRecord;
29+
30+
const octokit = await probot.auth(installation_id);
31+
32+
const config = await getPullConfig(octokit, logger, {
33+
installation_id,
34+
owner,
35+
repo,
36+
repository_id: 0,
37+
metadata: {
38+
cron: "",
39+
job_priority: JobPriority.Normal,
40+
repository_id: 0,
41+
},
42+
});
43+
if (!config) {
44+
logger.info(`⚠️ No config found, skipping`);
45+
return;
46+
}
47+
48+
const pull = new Pull(octokit, { owner, repo, logger }, config);
49+
await pull.routineCheck();
50+
51+
logger.info(`✅ Repo job processed successfully`);
52+
} catch (error) {
53+
logger.error(error, "❌ Repo job failed");
54+
}
55+
} catch (error) {
56+
logger.error(error, "Error processing");
57+
exitCode = 1;
58+
} finally {
59+
await disconnectMongoDB();
60+
Deno.exit(exitCode);
61+
}
62+
}
63+
64+
if (import.meta.main) {
65+
const args = Deno.args;
66+
if (args.length !== 1) {
67+
logger.error(
68+
"Usage: deno task manual-process <owner>/<repo>",
69+
);
70+
Deno.exit(1);
71+
}
72+
73+
await main(args[0]);
74+
}

0 commit comments

Comments
 (0)