(params: DockerResolverParameters, mergedConfig: MergedDevContainerConfig, imageName: string, imageDetails: () => Promise<ImageDetails>, runArgsUser: string | undefined)
| 419 | } |
| 420 | |
| 421 | export async function getRemoteUserUIDUpdateDetails(params: DockerResolverParameters, mergedConfig: MergedDevContainerConfig, imageName: string, imageDetails: () => Promise<ImageDetails>, runArgsUser: string | undefined) { |
| 422 | const { common } = params; |
| 423 | const { cliHost } = common; |
| 424 | const { updateRemoteUserUID } = mergedConfig; |
| 425 | if (params.updateRemoteUserUIDDefault === 'never' || !(typeof updateRemoteUserUID === 'boolean' ? updateRemoteUserUID : params.updateRemoteUserUIDDefault === 'on') || !(cliHost.platform === 'linux' || params.updateRemoteUserUIDOnMacOS && cliHost.platform === 'darwin')) { |
| 426 | return null; |
| 427 | } |
| 428 | const details = await imageDetails(); |
| 429 | const imageUser = details.Config.User || 'root'; |
| 430 | const remoteUser = mergedConfig.remoteUser || runArgsUser || imageUser; |
| 431 | if (remoteUser === 'root' || /^\d+$/.test(remoteUser)) { |
| 432 | return null; |
| 433 | } |
| 434 | const folderImageName = getFolderImageName(common); |
| 435 | const fixedImageName = `${imageName.startsWith(folderImageName) ? imageName : folderImageName}-uid`; |
| 436 | |
| 437 | return { |
| 438 | imageName: fixedImageName, |
| 439 | remoteUser, |
| 440 | imageUser, |
| 441 | platform: [details.Os, details.Architecture, details.Variant].filter(Boolean).join('/') |
| 442 | }; |
| 443 | } |
| 444 | |
| 445 | export async function updateRemoteUserUID(params: DockerResolverParameters, mergedConfig: MergedDevContainerConfig, imageName: string, imageDetails: () => Promise<ImageDetails>, runArgsUser: string | undefined) { |
| 446 | const { common } = params; |
no test coverage detected