diff options
Diffstat (limited to 'packages/cli/src/utils/sandbox.ts')
| -rw-r--r-- | packages/cli/src/utils/sandbox.ts | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/packages/cli/src/utils/sandbox.ts b/packages/cli/src/utils/sandbox.ts index dac34778..30006422 100644 --- a/packages/cli/src/utils/sandbox.ts +++ b/packages/cli/src/utils/sandbox.ts @@ -24,6 +24,7 @@ function getContainerPath(hostPath: string): string { if (os.platform() !== 'win32') { return hostPath; } + const withForwardSlashes = hostPath.replace(/\\/g, '/'); const match = withForwardSlashes.match(/^([A-Z]):\/(.*)/i); if (match) { @@ -114,7 +115,7 @@ function ports(): string[] { .map((p) => p.trim()); } -function entrypoint(workdir: string): string[] { +function entrypoint(workdir: string, cliArgs: string[]): string[] { const isWindows = os.platform() === 'win32'; const containerWorkdir = getContainerPath(workdir); const shellCmds = []; @@ -166,7 +167,7 @@ function entrypoint(workdir: string): string[] { ), ); - const cliArgs = process.argv.slice(2).map((arg) => quote([arg])); + const quotedCliArgs = cliArgs.slice(2).map((arg) => quote([arg])); const cliCmd = process.env['NODE_ENV'] === 'development' ? process.env['DEBUG'] @@ -176,8 +177,7 @@ function entrypoint(workdir: string): string[] { ? `node --inspect-brk=0.0.0.0:${process.env['DEBUG_PORT'] || '9229'} $(which gemini)` : 'gemini'; - const args = [...shellCmds, cliCmd, ...cliArgs]; - + const args = [...shellCmds, cliCmd, ...quotedCliArgs]; return ['bash', '-c', args.join(' ')]; } @@ -185,6 +185,7 @@ export async function start_sandbox( config: SandboxConfig, nodeArgs: string[] = [], cliConfig?: Config, + cliArgs: string[] = [], ) { const patcher = new ConsolePatcher({ debugMode: cliConfig?.getDebugMode() || !!process.env['DEBUG'], @@ -263,6 +264,8 @@ export async function start_sandbox( args.push('-D', `INCLUDE_DIR_${i}=${dirPath}`); } + const finalArgv = cliArgs; + args.push( '-f', profileFile, @@ -271,7 +274,7 @@ export async function start_sandbox( [ `SANDBOX=sandbox-exec`, `NODE_OPTIONS="${nodeOptions}"`, - ...process.argv.map((arg) => quote([arg])), + ...finalArgv.map((arg) => quote([arg])), ].join(' '), ); // start and set up proxy if GEMINI_SANDBOX_PROXY_COMMAND is set @@ -692,7 +695,7 @@ export async function start_sandbox( // Determine if the current user's UID/GID should be passed to the sandbox. // See shouldUseCurrentUserInSandbox for more details. let userFlag = ''; - const finalEntrypoint = entrypoint(workdir); + const finalEntrypoint = entrypoint(workdir, cliArgs); if (process.env['GEMINI_CLI_INTEGRATION_TEST'] === 'true') { args.push('--user', 'root'); |
