in container_images/registry-image-forked/commands/in.go [128:154]
func downloadWithRetry(tag name.Tag, source resource.Source, params resource.GetParams, version resource.Version, dest string, stderr io.Writer) error {
fmt.Fprintf(os.Stderr, "fetching %s@%s\n", color.GreenString(source.Repository), color.YellowString(version.Digest))
repo, err := source.NewRepository()
if err != nil {
return fmt.Errorf("resolve repository name: %w", err)
}
return resource.RetryOnRateLimit(func() error {
opts, err := source.AuthOptions(repo, []string{transport.PullScope})
if err != nil {
return err
}
image, err := remote.Image(repo.Digest(version.Digest), opts...)
if err != nil {
return fmt.Errorf("get image: %w", err)
}
err = saveImage(dest, tag, image, params.Format(), source.Debug, stderr)
if err != nil {
return fmt.Errorf("save image: %w", err)
}
return nil
})
}