update vendored go-containerregistry
This commit is contained in:
parent
a7c82cf6f6
commit
28f3ec30c2
|
|
@ -275,7 +275,7 @@ func numLayers(image string) (int, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
img, err := daemon.Image(ref, &daemon.ReadOptions{})
|
img, err := daemon.Image(ref)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,14 +30,42 @@ import (
|
||||||
// image accesses an image from a docker daemon
|
// image accesses an image from a docker daemon
|
||||||
type image struct {
|
type image struct {
|
||||||
v1.Image
|
v1.Image
|
||||||
}
|
|
||||||
|
|
||||||
type ReadOptions struct {
|
opener tarball.Opener
|
||||||
Buffer bool
|
ref name.Reference
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ v1.Image = (*image)(nil)
|
var _ v1.Image = (*image)(nil)
|
||||||
|
|
||||||
|
type imageOpener struct {
|
||||||
|
ref name.Reference
|
||||||
|
buffered bool
|
||||||
|
}
|
||||||
|
|
||||||
|
type ImageOption func(*imageOpener) error
|
||||||
|
|
||||||
|
func (i *imageOpener) Open() (v1.Image, error) {
|
||||||
|
var opener tarball.Opener
|
||||||
|
var err error
|
||||||
|
if i.buffered {
|
||||||
|
opener, err = bufferedOpener(i.ref)
|
||||||
|
} else {
|
||||||
|
opener, err = unbufferedOpener(i.ref)
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
tb, err := tarball.Image(opener, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
img := &image{
|
||||||
|
Image: tb,
|
||||||
|
}
|
||||||
|
return img, nil
|
||||||
|
}
|
||||||
|
|
||||||
// API interface for testing.
|
// API interface for testing.
|
||||||
type ImageSaver interface {
|
type ImageSaver interface {
|
||||||
ImageSave(context.Context, []string) (io.ReadCloser, error)
|
ImageSave(context.Context, []string) (io.ReadCloser, error)
|
||||||
|
|
@ -83,25 +111,18 @@ func unbufferedOpener(ref name.Reference) (tarball.Opener, error) {
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Image exposes an image reference from within the Docker daemon.
|
// Image provides access to an image reference from the Docker daemon,
|
||||||
func Image(ref name.Reference, ro *ReadOptions) (v1.Image, error) {
|
// applying functional options to the underlying imageOpener before
|
||||||
var opener tarball.Opener
|
// resolving the reference into a v1.Image.
|
||||||
var err error
|
func Image(ref name.Reference, options ...ImageOption) (v1.Image, error) {
|
||||||
if ro.Buffer {
|
i := &imageOpener{
|
||||||
opener, err = bufferedOpener(ref)
|
ref: ref,
|
||||||
} else {
|
buffered: true, // buffer by default
|
||||||
opener, err = unbufferedOpener(ref)
|
|
||||||
}
|
}
|
||||||
if err != nil {
|
for _, option := range options {
|
||||||
return nil, err
|
if err := option(i); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
return i.Open()
|
||||||
tb, err := tarball.Image(opener, nil)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
img := &image{
|
|
||||||
Image: tb,
|
|
||||||
}
|
|
||||||
return img, nil
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
32
vendor/github.com/google/go-containerregistry/pkg/v1/daemon/options.go
generated
vendored
Normal file
32
vendor/github.com/google/go-containerregistry/pkg/v1/daemon/options.go
generated
vendored
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
// Copyright 2018 Google LLC All Rights Reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package daemon
|
||||||
|
|
||||||
|
func WithBufferedOpener() ImageOption {
|
||||||
|
return func(i *imageOpener) error {
|
||||||
|
return i.setBuffered(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func WithUnbufferedOpener() ImageOption {
|
||||||
|
return func(i *imageOpener) error {
|
||||||
|
return i.setBuffered(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *imageOpener) setBuffered(buffer bool) error {
|
||||||
|
i.buffered = buffer
|
||||||
|
return nil
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue