MCPcopy Index your code
hub / github.com/coder/mux / forkWorkspace

Method forkWorkspace

src/node/runtime/multiProjectRuntime.ts:240–339  ·  view source on GitHub ↗
(params: WorkspaceForkParams)

Source from the content-addressed store, hash-verified

238 }
239
240 async forkWorkspace(params: WorkspaceForkParams): Promise<WorkspaceForkResult> {
241 const forkedRuntimes: MultiProjectRuntimeEntry[] = [];
242 const projectWorkspaces: ProjectWorkspaceEntry[] = [];
243 let primaryForkResult: WorkspaceForkResult | undefined;
244
245 for (const [runtimeIndex, projectRuntime] of this.projectRuntimes.entries()) {
246 const forkResult = await projectRuntime.runtime.forkWorkspace({
247 ...params,
248 projectPath: projectRuntime.projectPath,
249 });
250
251 if (runtimeIndex === 0) {
252 primaryForkResult = forkResult;
253 }
254
255 if (!forkResult.success) {
256 const rollbackErrors = await this.rollbackCreatedWorkspaces(
257 forkedRuntimes,
258 params.newWorkspaceName,
259 params.abortSignal,
260 params.trusted
261 );
262
263 return {
264 success: false,
265 error: this.withRollbackErrors(
266 `Failed to fork project ${projectRuntime.projectName}: ${forkResult.error ?? "Unknown error"}`,
267 rollbackErrors
268 ),
269 ...(forkResult.failureIsFatal !== undefined
270 ? { failureIsFatal: forkResult.failureIsFatal }
271 : {}),
272 ...(forkResult.forkedRuntimeConfig
273 ? { forkedRuntimeConfig: forkResult.forkedRuntimeConfig }
274 : {}),
275 ...(forkResult.sourceRuntimeConfig
276 ? { sourceRuntimeConfig: forkResult.sourceRuntimeConfig }
277 : {}),
278 };
279 }
280
281 const forkedWorkspacePath = forkResult.workspacePath;
282 if (!forkedWorkspacePath) {
283 const rollbackErrors = await this.rollbackCreatedWorkspaces(
284 [...forkedRuntimes, projectRuntime],
285 params.newWorkspaceName,
286 params.abortSignal,
287 params.trusted
288 );
289
290 return {
291 success: false,
292 error: this.withRollbackErrors(
293 `Failed to fork project ${projectRuntime.projectName}: runtime returned success without workspacePath`,
294 rollbackErrors
295 ),
296 };
297 }

Callers

nothing calls this directly

Calls 8

withRollbackErrorsMethod · 0.95
getErrorMessageFunction · 0.90
createContainerMethod · 0.80
getContainerPathMethod · 0.80
forkWorkspaceMethod · 0.65
pushMethod · 0.65
assertFunction · 0.50

Tested by

no test coverage detected