(dockerfile: Dockerfile, buildArgs: Record<string, string>, baseImageEnv: Record<string, string>, globalBuildxPlatformArgs: Record<string, string> = {}, target: string | undefined)
| 82 | } |
| 83 | |
| 84 | export function findUserStatement(dockerfile: Dockerfile, buildArgs: Record<string, string>, baseImageEnv: Record<string, string>, globalBuildxPlatformArgs: Record<string, string> = {}, target: string | undefined) { |
| 85 | let stage: Stage | undefined = target ? dockerfile.stagesByLabel[target] : dockerfile.stages[dockerfile.stages.length - 1]; |
| 86 | const seen = new Set<Stage>(); |
| 87 | while (stage) { |
| 88 | if (seen.has(stage)) { |
| 89 | return undefined; |
| 90 | } |
| 91 | seen.add(stage); |
| 92 | |
| 93 | const i = findLastIndex(stage.instructions, i => i.instruction === 'USER'); |
| 94 | if (i !== -1) { |
| 95 | return replaceVariables(dockerfile, buildArgs, baseImageEnv, globalBuildxPlatformArgs, stage.instructions[i].name, stage, i) || undefined; |
| 96 | } |
| 97 | const image = replaceVariables(dockerfile, buildArgs, baseImageEnv, globalBuildxPlatformArgs, stage.from.image, dockerfile.preamble, dockerfile.preamble.instructions.length); |
| 98 | stage = dockerfile.stagesByLabel[image]; |
| 99 | } |
| 100 | return undefined; |
| 101 | } |
| 102 | |
| 103 | export function findBaseImage(dockerfile: Dockerfile, buildArgs: Record<string, string>, target: string | undefined, globalBuildxPlatformArgs: Record<string, string> = {}) { |
| 104 | let stage: Stage | undefined = target ? dockerfile.stagesByLabel[target] : dockerfile.stages[dockerfile.stages.length - 1]; |
no test coverage detected