(options: ProvisionOptions, disposables: (() => Promise<unknown> | undefined)[])
| 103 | } |
| 104 | |
| 105 | export async function createDockerParams(options: ProvisionOptions, disposables: (() => Promise<unknown> | undefined)[]): Promise<DockerResolverParameters> { |
| 106 | const { persistedFolder, additionalMounts, updateRemoteUserUIDDefault, containerDataFolder, containerSystemDataFolder, workspaceMountConsistency, gpuAvailability, mountWorkspaceGitRoot, mountGitWorktreeCommonDir, remoteEnv, noLockfile, frozenLockfile, omitLoggerHeader, secretsP } = options; |
| 107 | let parsedAuthority: DevContainerAuthority | undefined; |
| 108 | if (options.workspaceFolder) { |
| 109 | parsedAuthority = { hostPath: options.workspaceFolder } as DevContainerAuthority; |
| 110 | } |
| 111 | const extensionPath = path.join(__dirname, '..', '..'); |
| 112 | const sessionStart = new Date(); |
| 113 | const pkg = getPackageConfig(); |
| 114 | const output = createLog(options, pkg, sessionStart, disposables, omitLoggerHeader, secretsP ? await secretsP : undefined); |
| 115 | |
| 116 | const appRoot = undefined; |
| 117 | const cwd = options.workspaceFolder || process.cwd(); |
| 118 | const allowInheritTTY = options.logFormat === 'text'; |
| 119 | const cliHost = await getCLIHost(cwd, loadNativeModule, allowInheritTTY); |
| 120 | const sessionId = crypto.randomUUID(); |
| 121 | |
| 122 | const common: ResolverParameters = { |
| 123 | prebuild: options.prebuild, |
| 124 | computeExtensionHostEnv: false, |
| 125 | package: pkg, |
| 126 | containerDataFolder, |
| 127 | containerSystemDataFolder, |
| 128 | appRoot, |
| 129 | extensionPath, // TODO: rename to packagePath |
| 130 | sessionId, |
| 131 | sessionStart, |
| 132 | cliHost, |
| 133 | env: cliHost.env, |
| 134 | cwd, |
| 135 | isLocalContainer: false, |
| 136 | progress: () => { }, |
| 137 | output, |
| 138 | allowSystemConfigChange: true, |
| 139 | defaultUserEnvProbe: options.defaultUserEnvProbe, |
| 140 | lifecycleHook: createNullLifecycleHook(options.postCreateEnabled, options.skipNonBlocking, output), |
| 141 | getLogLevel: () => options.logLevel, |
| 142 | onDidChangeLogLevel: () => ({ dispose() { } }), |
| 143 | loadNativeModule, |
| 144 | allowInheritTTY, |
| 145 | shutdowns: [], |
| 146 | backgroundTasks: [], |
| 147 | persistedFolder: persistedFolder || await getCacheFolder(cliHost), // Fallback to tmp folder, even though that isn't 'persistent' |
| 148 | remoteEnv, |
| 149 | secretsP, |
| 150 | buildxPlatform: options.buildxPlatform, |
| 151 | buildxPush: options.buildxPush, |
| 152 | buildxOutput: options.buildxOutput, |
| 153 | buildxCacheTo: options.buildxCacheTo, |
| 154 | skipFeatureAutoMapping: options.skipFeatureAutoMapping, |
| 155 | skipPostAttach: options.skipPostAttach, |
| 156 | containerSessionDataFolder: options.containerSessionDataFolder, |
| 157 | skipPersistingCustomizationsFromFeatures: options.skipPersistingCustomizationsFromFeatures, |
| 158 | omitConfigRemotEnvFromMetadata: options.omitConfigRemotEnvFromMetadata, |
| 159 | dotfilesConfiguration: { |
| 160 | repository: options.dotfiles.repository, |
| 161 | installCommand: options.dotfiles.installCommand, |
| 162 | targetPath: options.dotfiles.targetPath || '~/dotfiles', |
no test coverage detected