From 491f8b28b4f53ddb763324964f38280c9a1221c3 Mon Sep 17 00:00:00 2001 From: Olcan Date: Mon, 28 Apr 2025 09:07:37 -0700 Subject: [PATCH] ability to (re-)build sandbox outside GC repo root, useful for dev iterations (#196) --- packages/cli/src/gemini.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/packages/cli/src/gemini.ts b/packages/cli/src/gemini.ts index 7e329dd6..fa78c67a 100644 --- a/packages/cli/src/gemini.ts +++ b/packages/cli/src/gemini.ts @@ -85,6 +85,25 @@ function start_sandbox(sandbox: string) { } } + // if BUILD_SANDBOX is set, then call scripts/build_sandbox.sh under gemini-code repo + // note this can only be done with binary linked from gemini-code repo + if (process.env.BUILD_SANDBOX) { + if (!gcPath.includes('gemini-code/packages/')) { + console.error( + 'ERROR: cannot BUILD_SANDBOX using installed gemini-code binary; ' + + 'run `npm link ./packages/cli` under gemini-code repo to switch to linked binary.', + ); + process.exit(1); + } else { + console.log('building sandbox ...'); + const gcRoot = gcPath.split('/packages/')[0]; + spawnSync(`cd ${gcRoot} && scripts/build_sandbox.sh`, { + stdio: 'inherit', + shell: true, + }); + } + } + // stop if image is missing if (!execSync(`${sandbox} images -q ${image}`).toString().trim()) { const remedy = gcPath.includes('gemini-code/packages/')