({
'user-data-folder': persistedFolder,
'docker-path': dockerPath,
'docker-compose-path': dockerComposePath,
'container-data-folder': containerDataFolder,
'container-system-data-folder': containerSystemDataFolder,
'workspace-folder': workspaceFolderArg,
'mount-workspace-git-root': mountWorkspaceGitRoot,
'mount-git-worktree-common-dir': mountGitWorktreeCommonDir,
'container-id': containerId,
'id-label': idLabel,
config: configParam,
'override-config': overrideConfig,
'log-level': logLevel,
'log-format': logFormat,
'terminal-rows': terminalRows,
'terminal-columns': terminalColumns,
'default-user-env-probe': defaultUserEnvProbe,
'remote-env': addRemoteEnv,
'skip-feature-auto-mapping': skipFeatureAutoMapping,
_: restArgs,
}: ExecArgs & { _?: string[] })
| 1311 | } |
| 1312 | |
| 1313 | export async function doExec({ |
| 1314 | 'user-data-folder': persistedFolder, |
| 1315 | 'docker-path': dockerPath, |
| 1316 | 'docker-compose-path': dockerComposePath, |
| 1317 | 'container-data-folder': containerDataFolder, |
| 1318 | 'container-system-data-folder': containerSystemDataFolder, |
| 1319 | 'workspace-folder': workspaceFolderArg, |
| 1320 | 'mount-workspace-git-root': mountWorkspaceGitRoot, |
| 1321 | 'mount-git-worktree-common-dir': mountGitWorktreeCommonDir, |
| 1322 | 'container-id': containerId, |
| 1323 | 'id-label': idLabel, |
| 1324 | config: configParam, |
| 1325 | 'override-config': overrideConfig, |
| 1326 | 'log-level': logLevel, |
| 1327 | 'log-format': logFormat, |
| 1328 | 'terminal-rows': terminalRows, |
| 1329 | 'terminal-columns': terminalColumns, |
| 1330 | 'default-user-env-probe': defaultUserEnvProbe, |
| 1331 | 'remote-env': addRemoteEnv, |
| 1332 | 'skip-feature-auto-mapping': skipFeatureAutoMapping, |
| 1333 | _: restArgs, |
| 1334 | }: ExecArgs & { _?: string[] }) { |
| 1335 | const disposables: (() => Promise<unknown> | undefined)[] = []; |
| 1336 | const dispose = async () => { |
| 1337 | await Promise.all(disposables.map(d => d())); |
| 1338 | }; |
| 1339 | let output: Log | undefined; |
| 1340 | const isTTY = process.stdin.isTTY && process.stdout.isTTY || logFormat === 'json'; // If stdin or stdout is a pipe, we don't want to use a PTY. |
| 1341 | try { |
| 1342 | const workspaceFolder = workspaceFolderArg ? path.resolve(process.cwd(), workspaceFolderArg) : undefined; |
| 1343 | const providedIdLabels = idLabel ? Array.isArray(idLabel) ? idLabel as string[] : [idLabel] : undefined; |
| 1344 | const addRemoteEnvs = addRemoteEnv ? (Array.isArray(addRemoteEnv) ? addRemoteEnv as string[] : [addRemoteEnv]) : []; |
| 1345 | const configFile = configParam ? URI.file(path.resolve(process.cwd(), configParam)) : undefined; |
| 1346 | const overrideConfigFile = overrideConfig ? URI.file(path.resolve(process.cwd(), overrideConfig)) : undefined; |
| 1347 | const params = await createDockerParams({ |
| 1348 | dockerPath, |
| 1349 | dockerComposePath, |
| 1350 | containerDataFolder, |
| 1351 | containerSystemDataFolder, |
| 1352 | workspaceFolder, |
| 1353 | mountWorkspaceGitRoot, |
| 1354 | mountGitWorktreeCommonDir, |
| 1355 | configFile, |
| 1356 | overrideConfigFile, |
| 1357 | logLevel: mapLogLevel(logLevel), |
| 1358 | logFormat, |
| 1359 | log: text => process.stderr.write(text), |
| 1360 | terminalDimensions: terminalColumns && terminalRows ? { columns: terminalColumns, rows: terminalRows } : isTTY ? { columns: process.stdout.columns, rows: process.stdout.rows } : undefined, |
| 1361 | onDidChangeTerminalDimensions: terminalColumns && terminalRows ? undefined : isTTY ? createStdoutResizeEmitter(disposables) : undefined, |
| 1362 | defaultUserEnvProbe, |
| 1363 | removeExistingContainer: false, |
| 1364 | buildNoCache: false, |
| 1365 | expectExistingContainer: false, |
| 1366 | postCreateEnabled: true, |
| 1367 | skipNonBlocking: false, |
| 1368 | prebuild: false, |
| 1369 | persistedFolder, |
| 1370 | additionalMounts: [], |
no test coverage detected