mirror of
https://github.com/containers/skopeo.git
synced 2025-09-03 07:35:02 +00:00
cmd/skopeo: check errors on close functions for image handling.
Signed-off-by: Erik Hollensbe <github@hollensbe.org>
This commit is contained in:
@@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/containers/image/docker"
|
"github.com/containers/image/docker"
|
||||||
"github.com/containers/image/manifest"
|
"github.com/containers/image/manifest"
|
||||||
"github.com/opencontainers/go-digest"
|
"github.com/opencontainers/go-digest"
|
||||||
|
"github.com/pkg/errors"
|
||||||
"github.com/urfave/cli"
|
"github.com/urfave/cli"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -49,12 +50,17 @@ var inspectCmd = cli.Command{
|
|||||||
Usage: "Use `USERNAME[:PASSWORD]` for accessing the registry",
|
Usage: "Use `USERNAME[:PASSWORD]` for accessing the registry",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) (retErr error) {
|
||||||
img, err := parseImage(c)
|
img, err := parseImage(c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer img.Close()
|
|
||||||
|
defer func() {
|
||||||
|
if err := img.Close(); err != nil {
|
||||||
|
retErr = errors.Wrapf(retErr, fmt.Sprintf("(could not close image: %v) ", err))
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
rawManifest, _, err := img.Manifest()
|
rawManifest, _, err := img.Manifest()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@@ -1,7 +1,6 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
@@ -12,6 +11,7 @@ import (
|
|||||||
"github.com/containers/image/manifest"
|
"github.com/containers/image/manifest"
|
||||||
"github.com/containers/image/types"
|
"github.com/containers/image/types"
|
||||||
"github.com/opencontainers/go-digest"
|
"github.com/opencontainers/go-digest"
|
||||||
|
"github.com/pkg/errors"
|
||||||
"github.com/urfave/cli"
|
"github.com/urfave/cli"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ var layersCmd = cli.Command{
|
|||||||
Usage: "Get layers of IMAGE-NAME",
|
Usage: "Get layers of IMAGE-NAME",
|
||||||
ArgsUsage: "IMAGE-NAME [LAYER...]",
|
ArgsUsage: "IMAGE-NAME [LAYER...]",
|
||||||
Hidden: true,
|
Hidden: true,
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) (retErr error) {
|
||||||
fmt.Fprintln(os.Stderr, `DEPRECATED: skopeo layers is deprecated in favor of skopeo copy`)
|
fmt.Fprintln(os.Stderr, `DEPRECATED: skopeo layers is deprecated in favor of skopeo copy`)
|
||||||
if c.NArg() == 0 {
|
if c.NArg() == 0 {
|
||||||
return errors.New("Usage: layers imageReference [layer...]")
|
return errors.New("Usage: layers imageReference [layer...]")
|
||||||
@@ -36,10 +36,17 @@ var layersCmd = cli.Command{
|
|||||||
}
|
}
|
||||||
src, err := image.FromSource(rawSource)
|
src, err := image.FromSource(rawSource)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
rawSource.Close()
|
if closeErr := rawSource.Close(); closeErr != nil {
|
||||||
|
return errors.Wrapf(err, " (close error: %v)", closeErr)
|
||||||
|
}
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer src.Close()
|
defer func() {
|
||||||
|
if err := src.Close(); err != nil {
|
||||||
|
retErr = errors.Wrapf(retErr, " (close error: %v)", err)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
var blobDigests []digest.Digest
|
var blobDigests []digest.Digest
|
||||||
for _, dString := range c.Args().Tail() {
|
for _, dString := range c.Args().Tail() {
|
||||||
@@ -80,7 +87,12 @@ var layersCmd = cli.Command{
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer dest.Close()
|
|
||||||
|
defer func() {
|
||||||
|
if err := dest.Close(); err != nil {
|
||||||
|
retErr = errors.Wrapf(retErr, " (close error: %v)", err)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
for _, digest := range blobDigests {
|
for _, digest := range blobDigests {
|
||||||
r, blobSize, err := rawSource.GetBlob(types.BlobInfo{Digest: digest, Size: -1})
|
r, blobSize, err := rawSource.GetBlob(types.BlobInfo{Digest: digest, Size: -1})
|
||||||
@@ -88,10 +100,11 @@ var layersCmd = cli.Command{
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if _, err := dest.PutBlob(r, types.BlobInfo{Digest: digest, Size: blobSize}); err != nil {
|
if _, err := dest.PutBlob(r, types.BlobInfo{Digest: digest, Size: blobSize}); err != nil {
|
||||||
r.Close()
|
if closeErr := r.Close(); closeErr != nil {
|
||||||
|
return errors.Wrapf(err, " (close error: %v)", closeErr)
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
r.Close()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
manifest, _, err := src.Manifest()
|
manifest, _, err := src.Manifest()
|
||||||
|
Reference in New Issue
Block a user