sourcebot/packages/backend/src/zoekt.ts

30 lines
1 KiB
TypeScript
Raw Normal View History

2024-11-01 17:51:14 +00:00
import { exec } from "child_process";
2025-02-27 00:55:10 +00:00
import { AppContext } from "./types.js";
2025-01-14 21:37:31 +00:00
import { Repo } from "@sourcebot/db";
import { getRepoPath } from "./utils.js";
import { DEFAULT_SETTINGS } from "./constants.js";
import { getShardPrefix } from "./utils.js";
2024-11-01 17:51:14 +00:00
2025-01-14 21:37:31 +00:00
export const indexGitRepository = async (repo: Repo, ctx: AppContext) => {
2024-11-07 02:28:10 +00:00
const revisions = [
2025-01-14 21:37:31 +00:00
'HEAD'
2024-11-07 02:28:10 +00:00
];
const shardPrefix = getShardPrefix(repo.orgId, repo.id);
2025-01-14 21:37:31 +00:00
const repoPath = getRepoPath(repo, ctx);
2025-01-24 21:16:08 +00:00
const command = `zoekt-git-index -allow_missing_branches -index ${ctx.indexPath} -file_limit ${DEFAULT_SETTINGS.maxFileSize} -branches ${revisions.join(',')} -tenant_id ${repo.orgId} -shard_prefix ${shardPrefix} ${repoPath}`;
2024-11-07 02:28:10 +00:00
2024-11-01 17:51:14 +00:00
return new Promise<{ stdout: string, stderr: string }>((resolve, reject) => {
2024-11-07 02:28:10 +00:00
exec(command, (error, stdout, stderr) => {
2024-11-01 17:51:14 +00:00
if (error) {
reject(error);
return;
}
resolve({
stdout,
stderr
});
})
});
}