"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkoutRepo = void 0; const utils_1 = require("./utils"); const fs_1 = require("fs"); const path_1 = require("path"); const context_1 = require("./context"); const checkoutRepo = async (tempDir, options = {}) => { const ctx = (0, context_1.getCurrentContext)(); if (!ctx) throw new Error('No context available for checkout'); const { owner, repo } = ctx.repo; const installationId = ctx.probotContext.payload.installation.id; const tokenResp = await ctx.probotContext.octokit.apps.createInstallationAccessToken({ installation_id: installationId }); const token = tokenResp.data.token; if (!token) { throw new Error('Failed to create installation access token: token is undefined'); } const cloneUrl = `https://x-access-token:${token}@github.com/${owner}/${repo}.git`; const headBranch = ctx.probotContext.payload.pull_request.head.ref; const headSha = ctx.probotContext.payload.pull_request.head.sha; if ((0, fs_1.existsSync)(tempDir)) { (0, fs_1.rmSync)(tempDir, { recursive: true, force: true }); } (0, fs_1.mkdirSync)(tempDir, { recursive: true }); console.log(`Cloning ${owner}/${repo} into ${tempDir}...`); if (options.sparse && options.files && options.files.length > 0) { console.log(`Using sparse checkout for ${options.files.length} files...`); (0, utils_1.prixExec)(`git clone --no-checkout --depth 1 ${cloneUrl} .`, { cwd: tempDir, stdio: 'pipe' }); (0, utils_1.prixExec)(`git fetch origin ${headSha} --depth 1`, { cwd: tempDir }); const sparseConfig = options.files.join('\n'); (0, fs_1.writeFileSync)((0, path_1.join)(tempDir, '.git/info/sparse-checkout'), sparseConfig); (0, utils_1.prixExec)(`git config core.sparseCheckout true`, { cwd: tempDir }); (0, utils_1.prixExec)(`git checkout ${headSha}`, { cwd: tempDir }); } else { console.log(`Cloning ${owner}/${repo} with depth 1...`); (0, utils_1.prixExec)(`git clone --no-checkout --depth 1 ${cloneUrl} .`, { cwd: tempDir, stdio: 'pipe' }); (0, utils_1.prixExec)(`git fetch origin ${headSha} --depth 1`, { cwd: tempDir }); (0, utils_1.prixExec)(`git checkout ${headSha}`, { cwd: tempDir }); } (0, utils_1.prixExec)(`git config user.name "PRIX AI Auditor"`, { cwd: tempDir }); (0, utils_1.prixExec)(`git config user.email "bot@prix.ai"`, { cwd: tempDir }); return tempDir; }; exports.checkoutRepo = checkoutRepo; //# sourceMappingURL=checkout.js.map