MCPcopy
hub / github.com/coder/mux / runUp

Function runUp

src/node/runtime/devcontainerCli.ts:243–406  ·  view source on GitHub ↗
(args: string[])

Source from the content-addressed store, hash-verified

241 }
242
243 const runUp = (args: string[]): Promise<DevcontainerUpResult> => {
244 const logArgs = redactDevcontainerArgsForLog(args);
245 initLogger.logStep(`Running: devcontainer ${logArgs.join(" ")}`);
246
247 return new Promise((resolve, reject) => {
248 if (abortSignal?.aborted) {
249 reject(new Error("devcontainer up aborted"));
250 return;
251 }
252
253 const proc = spawn("devcontainer", args, {
254 stdio: ["ignore", "pipe", "pipe"],
255 timeout: timeoutMs,
256 cwd: workspaceFolder,
257 });
258
259 let settled = false;
260 let lastResultLine: DevcontainerUpResultLine | null = null;
261 let stderrBuffer = "";
262 let timeoutId: ReturnType<typeof setTimeout> | undefined;
263
264 const settleSuccess = (result: DevcontainerUpResult) => {
265 if (settled) return;
266 settled = true;
267 if (timeoutId) clearTimeout(timeoutId);
268 resolve(result);
269 };
270
271 const appendStderrSummary = (text: string) => {
272 if (stderrBuffer.length >= MAX_STDERR_BUFFER_LENGTH) return;
273 const next = `${text}\n`;
274 stderrBuffer = (stderrBuffer + next).slice(0, MAX_STDERR_BUFFER_LENGTH);
275 };
276 const settleError = (error: Error) => {
277 if (settled) return;
278 settled = true;
279 if (timeoutId) clearTimeout(timeoutId);
280 reject(error);
281 };
282
283 const stdoutLineBuffer = new LineBuffer((line) => {
284 const parsed = parseDevcontainerStdoutLine(line);
285 if (!parsed) return;
286 if (parsed.kind === "result") {
287 lastResultLine = parsed.result;
288 return;
289 }
290 if (parsed.kind === "log") {
291 initLogger.logStdout(parsed.text);
292 return;
293 }
294 initLogger.logStdout(parsed.text);
295 });
296
297 const stderrLineBuffer = new LineBuffer((line) => {
298 const parsed = parseDevcontainerStdoutLine(line);
299 if (parsed?.kind === "result") {
300 lastResultLine ??= parsed.result;

Callers 1

devcontainerUpFunction · 0.85

Calls 15

appendMethod · 0.95
flushMethod · 0.95
getErrorMessageFunction · 0.90
rejectFunction · 0.85
appendStderrSummaryFunction · 0.85
settleErrorFunction · 0.85
logStepMethod · 0.80
logStdoutMethod · 0.80
onMethod · 0.80
removeEventListenerMethod · 0.80

Tested by

no test coverage detected