summaryrefslogtreecommitdiff
path: root/packages/cli/src/utils/sandbox.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src/utils/sandbox.ts')
-rw-r--r--packages/cli/src/utils/sandbox.ts63
1 files changed, 33 insertions, 30 deletions
diff --git a/packages/cli/src/utils/sandbox.ts b/packages/cli/src/utils/sandbox.ts
index 46ede9f8..08714bd8 100644
--- a/packages/cli/src/utils/sandbox.ts
+++ b/packages/cli/src/utils/sandbox.ts
@@ -342,7 +342,6 @@ export async function start_sandbox(sandbox: string) {
// spawn child and let it inherit stdio
sandboxProcess = spawn(sandbox, args, {
stdio: 'inherit',
- env: sandboxEnv,
});
await new Promise((resolve) => sandboxProcess?.on('close', resolve));
return;
@@ -506,38 +505,41 @@ export async function start_sandbox(sandbox: string) {
// copy as both upper-case and lower-case as is required by some utilities
// GEMINI_SANDBOX_PROXY_COMMAND implies HTTPS_PROXY unless HTTP_PROXY is set
const proxyCommand = process.env.GEMINI_SANDBOX_PROXY_COMMAND;
- let proxy =
- process.env.HTTPS_PROXY ||
- process.env.https_proxy ||
- process.env.HTTP_PROXY ||
- process.env.http_proxy ||
- 'http://localhost:8877';
- proxy = proxy.replace('localhost', SANDBOX_PROXY_NAME);
- if (proxy) {
- args.push('--env', `HTTPS_PROXY=${proxy}`);
- args.push('--env', `https_proxy=${proxy}`); // lower-case can be required, e.g. for curl
- args.push('--env', `HTTP_PROXY=${proxy}`);
- args.push('--env', `http_proxy=${proxy}`);
- }
- const noProxy = process.env.NO_PROXY || process.env.no_proxy;
- if (noProxy) {
- args.push('--env', `NO_PROXY=${noProxy}`);
- args.push('--env', `no_proxy=${noProxy}`);
- }
- // if using proxy, switch to internal networking through proxy
- if (proxy) {
- execSync(
- `${sandbox} network inspect ${SANDBOX_NETWORK_NAME} || ${sandbox} network create --internal ${SANDBOX_NETWORK_NAME}`,
- );
- args.push('--network', SANDBOX_NETWORK_NAME);
- // if proxy command is set, create a separate network w/ host access (i.e. non-internal)
- // we will run proxy in its own container connected to both host network and internal network
- // this allows proxy to work even on rootless podman on macos with host<->vm<->container isolation
- if (proxyCommand) {
+ if (proxyCommand) {
+ let proxy =
+ process.env.HTTPS_PROXY ||
+ process.env.https_proxy ||
+ process.env.HTTP_PROXY ||
+ process.env.http_proxy ||
+ 'http://localhost:8877';
+ proxy = proxy.replace('localhost', SANDBOX_PROXY_NAME);
+ if (proxy) {
+ args.push('--env', `HTTPS_PROXY=${proxy}`);
+ args.push('--env', `https_proxy=${proxy}`); // lower-case can be required, e.g. for curl
+ args.push('--env', `HTTP_PROXY=${proxy}`);
+ args.push('--env', `http_proxy=${proxy}`);
+ }
+ const noProxy = process.env.NO_PROXY || process.env.no_proxy;
+ if (noProxy) {
+ args.push('--env', `NO_PROXY=${noProxy}`);
+ args.push('--env', `no_proxy=${noProxy}`);
+ }
+
+ // if using proxy, switch to internal networking through proxy
+ if (proxy) {
execSync(
- `${sandbox} network inspect ${SANDBOX_PROXY_NAME} || ${sandbox} network create ${SANDBOX_PROXY_NAME}`,
+ `${sandbox} network inspect ${SANDBOX_NETWORK_NAME} || ${sandbox} network create --internal ${SANDBOX_NETWORK_NAME}`,
);
+ args.push('--network', SANDBOX_NETWORK_NAME);
+ // if proxy command is set, create a separate network w/ host access (i.e. non-internal)
+ // we will run proxy in its own container connected to both host network and internal network
+ // this allows proxy to work even on rootless podman on macos with host<->vm<->container isolation
+ if (proxyCommand) {
+ execSync(
+ `${sandbox} network inspect ${SANDBOX_PROXY_NAME} || ${sandbox} network create ${SANDBOX_PROXY_NAME}`,
+ );
+ }
}
}
@@ -675,6 +677,7 @@ export async function start_sandbox(sandbox: string) {
// start and set up proxy if GEMINI_SANDBOX_PROXY_COMMAND is set
let proxyProcess: ChildProcess | undefined = undefined;
let sandboxProcess: ChildProcess | undefined = undefined;
+
if (proxyCommand) {
// run proxyCommand in its own container
const proxyContainerCommand = `${sandbox} run --rm --init ${userFlag} --name ${SANDBOX_PROXY_NAME} --network ${SANDBOX_PROXY_NAME} -p 8877:8877 -v ${process.cwd()}:${workdir} --workdir ${workdir} ${image} ${proxyCommand}`;