@@ -38,6 +38,7 @@ import (
3838 "github.com/GoogleContainerTools/container-diff/util"
3939 "github.com/google/go-containerregistry/pkg/v1"
4040 homedir "github.com/mitchellh/go-homedir"
41+ "github.com/pkg/errors"
4142 "github.com/sirupsen/logrus"
4243 "github.com/spf13/cobra"
4344 "github.com/spf13/pflag"
@@ -139,17 +140,17 @@ func getImageForName(imageName string) (pkgutil.Image, error) {
139140 start := time .Now ()
140141 img , err = tarball .ImageFromPath (imageName , nil )
141142 if err != nil {
142- return pkgutil.Image {}, err
143+ return pkgutil.Image {}, errors . Wrap ( err , "retrieving tar from path" )
143144 }
144145 elapsed := time .Now ().Sub (start )
145- logrus .Infof ("retrieving image from tar took %f seconds" , elapsed .Seconds ())
146+ logrus .Infof ("retrieving image ref from tar took %f seconds" , elapsed .Seconds ())
146147 } else if strings .HasPrefix (imageName , DaemonPrefix ) {
147148 // remove the daemon prefix
148149 imageName = strings .Replace (imageName , DaemonPrefix , "" , - 1 )
149150
150151 ref , err := name .ParseReference (imageName , name .WeakValidation )
151152 if err != nil {
152- return pkgutil.Image {}, err
153+ return pkgutil.Image {}, errors . Wrap ( err , "parsing image reference" )
153154 }
154155
155156 start := time .Now ()
@@ -158,28 +159,28 @@ func getImageForName(imageName string) (pkgutil.Image, error) {
158159 Buffer : true ,
159160 })
160161 if err != nil {
161- return pkgutil.Image {}, err
162+ return pkgutil.Image {}, errors . Wrap ( err , "retrieving image from daemon" )
162163 }
163164 elapsed := time .Now ().Sub (start )
164- logrus .Infof ("retrieving image from daemon took %f seconds" , elapsed .Seconds ())
165+ logrus .Infof ("retrieving local image ref took %f seconds" , elapsed .Seconds ())
165166 } else {
166167 // either has remote prefix or has no prefix, in which case we force remote
167168 imageName = strings .Replace (imageName , RemotePrefix , "" , - 1 )
168169 ref , err := name .ParseReference (imageName , name .WeakValidation )
169170 if err != nil {
170- return pkgutil.Image {}, err
171+ return pkgutil.Image {}, errors . Wrap ( err , "parsing image reference" )
171172 }
172173 auth , err := authn .DefaultKeychain .Resolve (ref .Context ().Registry )
173174 if err != nil {
174- return pkgutil.Image {}, err
175+ return pkgutil.Image {}, errors . Wrap ( err , "resolving auth" )
175176 }
176177 start := time .Now ()
177178 img , err = remote .Image (ref , auth , http .DefaultTransport )
178179 if err != nil {
179- return pkgutil.Image {}, err
180+ return pkgutil.Image {}, errors . Wrap ( err , "retrieving remote image" )
180181 }
181182 elapsed := time .Now ().Sub (start )
182- logrus .Infof ("retrieving remote image took %f seconds" , elapsed .Seconds ())
183+ logrus .Infof ("retrieving remote image ref took %f seconds" , elapsed .Seconds ())
183184 }
184185
185186 // create tempdir and extract fs into it
@@ -188,7 +189,7 @@ func getImageForName(imageName string) (pkgutil.Image, error) {
188189 start := time .Now ()
189190 imgLayers , err := img .Layers ()
190191 if err != nil {
191- return pkgutil.Image {}, err
192+ return pkgutil.Image {}, errors . Wrap ( err , "getting image layers" )
192193 }
193194 for _ , layer := range imgLayers {
194195 layerStart := time .Now ()
@@ -197,12 +198,12 @@ func getImageForName(imageName string) (pkgutil.Image, error) {
197198 if err != nil {
198199 return pkgutil.Image {
199200 Layers : layers ,
200- }, err
201+ }, errors . Wrap ( err , "getting extract path for layer" )
201202 }
202203 if err := pkgutil .GetFileSystemForLayer (layer , path , nil ); err != nil {
203204 return pkgutil.Image {
204205 Layers : layers ,
205- }, err
206+ }, errors . Wrap ( err , "getting filesystem for layer" )
206207 }
207208 layers = append (layers , pkgutil.Layer {
208209 FSPath : path ,
@@ -215,12 +216,15 @@ func getImageForName(imageName string) (pkgutil.Image, error) {
215216 }
216217
217218 path , err := getExtractPathForImage (imageName , img )
219+ if err != nil {
220+ return pkgutil.Image {}, err
221+ }
218222 // extract fs into provided dir
219223 if err := pkgutil .GetFileSystemForImage (img , path , nil ); err != nil {
220224 return pkgutil.Image {
221225 FSPath : path ,
222226 Layers : layers ,
223- }, err
227+ }, errors . Wrap ( err , "getting filesystem for image" )
224228 }
225229 return pkgutil.Image {
226230 Image : img ,
0 commit comments