content: Add InfoReaderProvider
The interface that combines both content.InfoProvider and content.Provider was duplicated in multiple places - create one directly in `content` package and use it instead. Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
This commit is contained in:
@@ -32,7 +32,6 @@ import (
|
||||
docker "github.com/distribution/reference"
|
||||
"k8s.io/apimachinery/pkg/util/sets"
|
||||
|
||||
"github.com/opencontainers/go-digest"
|
||||
imagedigest "github.com/opencontainers/go-digest"
|
||||
"github.com/opencontainers/go-digest/digestset"
|
||||
imageidentity "github.com/opencontainers/image-spec/identity"
|
||||
@@ -56,12 +55,6 @@ type Image struct {
|
||||
Pinned bool
|
||||
}
|
||||
|
||||
// InfoProvider provides both content and info about content
|
||||
type InfoProvider interface {
|
||||
content.Provider
|
||||
Info(ctx context.Context, dgst digest.Digest) (content.Info, error)
|
||||
}
|
||||
|
||||
// Store stores all images.
|
||||
type Store struct {
|
||||
lock sync.RWMutex
|
||||
@@ -72,7 +65,7 @@ type Store struct {
|
||||
images images.Store
|
||||
|
||||
// content provider
|
||||
provider InfoProvider
|
||||
provider content.InfoReaderProvider
|
||||
|
||||
// platform represents the currently supported platform for images
|
||||
// TODO: Make this store multi-platform
|
||||
@@ -83,7 +76,7 @@ type Store struct {
|
||||
}
|
||||
|
||||
// NewStore creates an image store.
|
||||
func NewStore(img images.Store, provider InfoProvider, platform platforms.MatchComparer) *Store {
|
||||
func NewStore(img images.Store, provider content.InfoReaderProvider, platform platforms.MatchComparer) *Store {
|
||||
return &Store{
|
||||
refCache: make(map[string]string),
|
||||
images: img,
|
||||
|
||||
@@ -58,11 +58,6 @@ var LineTreeFormat = TreeFormat{
|
||||
Spacer: " ",
|
||||
}
|
||||
|
||||
type ContentReader interface {
|
||||
content.Provider
|
||||
content.InfoProvider
|
||||
}
|
||||
|
||||
type ImageTreePrinter struct {
|
||||
verbose bool
|
||||
w io.Writer
|
||||
@@ -101,7 +96,7 @@ func NewImageTreePrinter(opts ...PrintOpt) *ImageTreePrinter {
|
||||
}
|
||||
|
||||
// PrintImageTree prints an image and all its sub elements
|
||||
func (p *ImageTreePrinter) PrintImageTree(ctx context.Context, img images.Image, store ContentReader) error {
|
||||
func (p *ImageTreePrinter) PrintImageTree(ctx context.Context, img images.Image, store content.InfoReaderProvider) error {
|
||||
fmt.Fprintln(p.w, img.Name)
|
||||
subchild := p.format.SkipLine
|
||||
fmt.Fprintf(p.w, "%s Created: %s\n", subchild, img.CreatedAt)
|
||||
@@ -113,12 +108,12 @@ func (p *ImageTreePrinter) PrintImageTree(ctx context.Context, img images.Image,
|
||||
}
|
||||
|
||||
// PrintManifestTree prints a manifest and all its sub elements
|
||||
func (p *ImageTreePrinter) PrintManifestTree(ctx context.Context, desc ocispec.Descriptor, store ContentReader) error {
|
||||
func (p *ImageTreePrinter) PrintManifestTree(ctx context.Context, desc ocispec.Descriptor, store content.InfoReaderProvider) error {
|
||||
// start displaying tree from the root descriptor perspective, which is a single child view
|
||||
return p.printManifestTree(ctx, desc, store, p.format.LastDrop, p.format.Spacer)
|
||||
}
|
||||
|
||||
func (p *ImageTreePrinter) printManifestTree(ctx context.Context, desc ocispec.Descriptor, store ContentReader, prefix, childprefix string) error {
|
||||
func (p *ImageTreePrinter) printManifestTree(ctx context.Context, desc ocispec.Descriptor, store content.InfoReaderProvider, prefix, childprefix string) error {
|
||||
subprefix := childprefix + p.format.MiddleDrop
|
||||
subchild := childprefix + p.format.SkipLine
|
||||
fmt.Fprintf(p.w, "%s%s @%s (%d bytes)\n", prefix, desc.MediaType, desc.Digest, desc.Size)
|
||||
@@ -177,7 +172,7 @@ func (p *ImageTreePrinter) printManifestTree(ctx context.Context, desc ocispec.D
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *ImageTreePrinter) showContent(ctx context.Context, store ContentReader, desc ocispec.Descriptor, prefix string) error {
|
||||
func (p *ImageTreePrinter) showContent(ctx context.Context, store content.InfoReaderProvider, desc ocispec.Descriptor, prefix string) error {
|
||||
if p.verbose {
|
||||
info, err := store.Info(ctx, desc.Digest)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user