(params: WorkspaceForkParams)
| 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 | } |
nothing calls this directly
no test coverage detected