@@ -31,6 +31,7 @@ import (
3131 "github.com/docker/index-cli-plugin/query"
3232 "github.com/docker/index-cli-plugin/sbom"
3333 "github.com/docker/index-cli-plugin/types"
34+ "github.com/docker/index-cli-plugin/util"
3435 v1 "github.com/google/go-containerregistry/pkg/v1"
3536 "github.com/moby/term"
3637 "github.com/pkg/errors"
@@ -57,10 +58,14 @@ func NewRootCmd(name string, isPlugin bool, dockerCli command.Cli) *cobra.Comman
5758 }
5859
5960 skill .Log .SetOutput (os .Stderr )
60- skill .Log .SetFormatter (& logrus.TextFormatter {
61- DisableTimestamp : true ,
62- DisableLevelTruncation : true ,
63- })
61+ if dockerCli .Out ().IsTerminal () {
62+ skill .Log .SetFormatter (& logrus.TextFormatter {
63+ DisableTimestamp : true ,
64+ DisableLevelTruncation : true ,
65+ })
66+ } else {
67+ skill .Log .SetFormatter (& logrus.JSONFormatter {})
68+ }
6469
6570 config := dockerCli .ConfigFile ()
6671
@@ -112,9 +117,9 @@ func NewRootCmd(name string, isPlugin bool, dockerCli command.Cli) *cobra.Comman
112117 var sb * types.Sbom
113118
114119 if ociDir == "" {
115- sb , _ , err = sbom .IndexImage (image , dockerCli . Client () )
120+ sb , _ , err = sbom .IndexImage (image , dockerCli )
116121 } else {
117- sb , _ , err = sbom .IndexPath (ociDir , image )
122+ sb , _ , err = sbom .IndexPath (ociDir , image , dockerCli )
118123 }
119124 if err != nil {
120125 return err
@@ -175,9 +180,9 @@ func NewRootCmd(name string, isPlugin bool, dockerCli command.Cli) *cobra.Comman
175180 var sb * types.Sbom
176181 var img * v1.Image
177182 if ociDir == "" {
178- sb , img , err = sbom .IndexImage (image , dockerCli . Client () )
183+ sb , img , err = sbom .IndexImage (image , dockerCli )
179184 } else {
180- sb , img , err = sbom .IndexPath (ociDir , image )
185+ sb , img , err = sbom .IndexPath (ociDir , image , dockerCli )
181186 }
182187 if err != nil {
183188 return err
@@ -206,9 +211,9 @@ func NewRootCmd(name string, isPlugin bool, dockerCli command.Cli) *cobra.Comman
206211 var img * v1.Image
207212
208213 if ociDir == "" {
209- sb , img , err = sbom .IndexImage (image , dockerCli . Client () )
214+ sb , img , err = sbom .IndexImage (image , dockerCli )
210215 } else {
211- sb , img , err = sbom .IndexPath (ociDir , image )
216+ sb , img , err = sbom .IndexPath (ociDir , image , dockerCli )
212217 }
213218 if err != nil {
214219 return err
@@ -246,7 +251,7 @@ func NewRootCmd(name string, isPlugin bool, dockerCli command.Cli) *cobra.Comman
246251 }
247252
248253 // see if the package comes in via the base image
249- s := StartInfoSpinner ("Detecting base image" )
254+ s := util . StartInfoSpinner ("Detecting base image" , dockerCli . Out (). IsTerminal () )
250255 defer s .Stop ()
251256 baseImages , index , _ := query .Detect (img , true , workspace , apiKey )
252257 s .Stop ()
@@ -261,7 +266,7 @@ func NewRootCmd(name string, isPlugin bool, dockerCli command.Cli) *cobra.Comman
261266 }
262267
263268 if baseImage != nil {
264- s := StartInfoSpinner ("Finding alternative base images" )
269+ s := util . StartInfoSpinner ("Finding alternative base images" , dockerCli . Out (). IsTerminal () )
265270 defer s .Stop ()
266271 aBaseImage , _ := query .ForBaseImageWithoutCve (c .SourceId , baseImage .Repository .Name , img , workspace , apiKey )
267272 s .Stop ()
@@ -294,7 +299,7 @@ func NewRootCmd(name string, isPlugin bool, dockerCli command.Cli) *cobra.Comman
294299 Use : "diff [OPTIONS]" ,
295300 Short : "Diff images" ,
296301 RunE : func (cmd * cobra.Command , args []string ) error {
297- return sbom .DiffImages (args [0 ], args [1 ], dockerCli . Client () , "" , "" )
302+ return sbom .DiffImages (args [0 ], args [1 ], dockerCli , "" , "" )
298303 },
299304 }
300305
0 commit comments