Skip to content

Commit 1622fd4

Browse files
TheMozgcode-asher
authored andcommitted
Preserve environment when forking shared process (#545)
1 parent 6c972e8 commit 1622fd4

File tree

2 files changed

+20
-12
lines changed

2 files changed

+20
-12
lines changed

packages/server/src/cli.ts

+11-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { field, logger } from "@coder/logger";
22
import { ServerMessage, SharedProcessActive } from "@coder/protocol/src/proto";
3+
import { preserveEnv } from "@coder/protocol";
34
import { ChildProcess, fork, ForkOptions } from "child_process";
45
import { randomFillSync } from "crypto";
56
import * as fs from "fs";
@@ -174,17 +175,21 @@ const bold = (text: string | number): string | number => {
174175
}
175176

176177
if (options.installExtension) {
178+
179+
let forkOptions = {
180+
env: {
181+
VSCODE_ALLOW_IO: "true"
182+
}
183+
}
184+
185+
preserveEnv(forkOptions);
186+
177187
const fork = forkModule("vs/code/node/cli", [
178188
"--user-data-dir", dataDir,
179189
"--builtin-extensions-dir", builtInExtensionsDir,
180190
"--extensions-dir", extensionsDir,
181191
"--install-extension", options.installExtension,
182-
], {
183-
env: {
184-
VSCODE_ALLOW_IO: "true",
185-
VSCODE_LOGS: process.env.VSCODE_LOGS,
186-
},
187-
}, dataDir);
192+
], forkOptions, dataDir);
188193

189194
fork.stdout.on("data", (d: Buffer) => d.toString().split("\n").forEach((l) => logger.info(l)));
190195
fork.stderr.on("data", (d: Buffer) => d.toString().split("\n").forEach((l) => logger.error(l)));

packages/server/src/vscode/sharedProcess.ts

+9-6
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { ParsedArgs } from "vs/platform/environment/common/environment";
77
import { Emitter } from "@coder/events/src";
88
import { retry } from "@coder/ide/src/retry";
99
import { logger, field, Level } from "@coder/logger";
10+
import { preserveEnv } from "@coder/protocol";
1011

1112
export enum SharedProcessState {
1213
Stopped,
@@ -88,13 +89,15 @@ export class SharedProcess {
8889
this.activeProcess.kill();
8990
}
9091

91-
const activeProcess = forkModule("vs/code/electron-browser/sharedProcess/sharedProcessMain", [], {
92+
let forkOptions = {
9293
env: {
93-
VSCODE_ALLOW_IO: "true",
94-
VSCODE_LOGS: process.env.VSCODE_LOGS,
95-
DISABLE_TELEMETRY: process.env.DISABLE_TELEMETRY,
96-
},
97-
}, this.userDataDir);
94+
VSCODE_ALLOW_IO: "true"
95+
}
96+
}
97+
98+
preserveEnv(forkOptions);
99+
100+
const activeProcess = forkModule("vs/code/electron-browser/sharedProcess/sharedProcessMain", [], forkOptions, this.userDataDir);
98101
this.activeProcess = activeProcess;
99102

100103
await new Promise((resolve, reject): void => {

0 commit comments

Comments
 (0)