Merge pull request #708 from nalind/inspect-raw

inspect --raw: skip the NewImage() step
This commit is contained in:
Miloslav Trmač 2019-08-28 20:00:01 +02:00 committed by GitHub
commit c4b0c7ce05
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -8,6 +8,7 @@ import (
"time" "time"
"github.com/containers/image/docker" "github.com/containers/image/docker"
"github.com/containers/image/image"
"github.com/containers/image/manifest" "github.com/containers/image/manifest"
"github.com/containers/image/transports" "github.com/containers/image/transports"
"github.com/opencontainers/go-digest" "github.com/opencontainers/go-digest"
@ -86,21 +87,40 @@ func (opts *inspectOptions) run(args []string, stdout io.Writer) (retErr error)
return err return err
} }
img, err := parseImage(ctx, opts.image, imageName) sys, err := opts.image.newSystemContext()
if err != nil { if err != nil {
return err return err
} }
src, err := parseImageSource(ctx, opts.image, imageName)
if err != nil {
return fmt.Errorf("Error parsing image name %q: %v", imageName, err)
}
defer func() { defer func() {
if err := img.Close(); err != nil { if err := src.Close(); err != nil {
retErr = errors.Wrapf(retErr, fmt.Sprintf("(could not close image: %v) ", err)) retErr = errors.Wrapf(retErr, fmt.Sprintf("(could not close image: %v) ", err))
} }
}() }()
rawManifest, _, err := img.Manifest(ctx) rawManifest, _, err := src.GetManifest(ctx, nil)
if err != nil { if err != nil {
return err return fmt.Errorf("Error retrieving manifest for image: %v", err)
} }
if opts.raw && !opts.config {
_, err := stdout.Write(rawManifest)
if err != nil {
return fmt.Errorf("Error writing manifest to standard output: %v", err)
}
return nil
}
img, err := image.FromUnparsedImage(ctx, sys, image.UnparsedInstance(src, nil))
if err != nil {
return fmt.Errorf("Error parsing manifest for image: %v", err)
}
if opts.config && opts.raw { if opts.config && opts.raw {
configBlob, err := img.ConfigBlob(ctx) configBlob, err := img.ConfigBlob(ctx)
if err != nil { if err != nil {
@ -111,12 +131,6 @@ func (opts *inspectOptions) run(args []string, stdout io.Writer) (retErr error)
return fmt.Errorf("Error writing configuration blob to standard output: %v", err) return fmt.Errorf("Error writing configuration blob to standard output: %v", err)
} }
return nil return nil
} else if opts.raw {
_, err := stdout.Write(rawManifest)
if err != nil {
return fmt.Errorf("Error writing manifest to standard output: %v", err)
}
return nil
} else if opts.config { } else if opts.config {
config, err := img.OCIConfig(ctx) config, err := img.OCIConfig(ctx)
if err != nil { if err != nil {
@ -128,6 +142,7 @@ func (opts *inspectOptions) run(args []string, stdout io.Writer) (retErr error)
} }
return nil return nil
} }
imgInspect, err := img.Inspect(ctx) imgInspect, err := img.Inspect(ctx)
if err != nil { if err != nil {
return err return err