in command-runner/internal/containers/finch/finch_pull.go [24:60]
func newPullExecutor(input newPullExecutorInput) common.Executor {
return func(ctx context.Context) error {
log.Ctx(ctx).Printf("containerd pull %s force? %v", input.Image, input.ForcePull)
if common.Dryrun(ctx) {
return nil
}
pull := input.ForcePull
if !pull {
imageExists, err := imageExistsLocally(ctx, input.Image, input.Platform)
log.Ctx(ctx).Printf("Image exists? %v", imageExists)
if err != nil {
return fmt.Errorf("unable to determine if image already exists for image '%s' (%s): %w", input.Image, input.Platform, err)
}
if !imageExists {
pull = true
}
}
if !pull {
return nil
}
f, err := newFinch(finchInstallDir)
if err != nil {
return err
}
imageRef := input.Image
log.Ctx(ctx).Printf("pulling image '%v' (%s)", imageRef, input.Platform)
_, _, err = f.RunWithoutStdio(ctx, "pull", "-q", imageRef)
return err
}
}