@@ -203,7 +203,7 @@ func RunBake(dockerCli command.Cli, in BakeOptions, validator BakeValidator, pri
203
203
_ = printer .Wait ()
204
204
205
205
if in .save {
206
- printSaveHelp (in .project , in .buildID , in .progress , requestedTargets )
206
+ printSaveHelp (in .project , in .buildID , in .progress , requestedTargets , in . additionalTags )
207
207
}
208
208
linter .Print (os .Stderr , in .progress )
209
209
return nil
@@ -295,10 +295,11 @@ func BakeCmd() *cobra.Command {
295
295
options .project ,
296
296
bakeOpts ,
297
297
helpers.UsingDepotFeatures {
298
- Push : options .exportPush ,
299
- Load : options .exportLoad ,
300
- Save : options .save ,
301
- Lint : options .lint ,
298
+ Push : options .exportPush ,
299
+ Load : options .exportLoad ,
300
+ Save : options .save ,
301
+ SaveTags : options .saveTags ,
302
+ Lint : options .lint ,
302
303
},
303
304
)
304
305
build , err := helpers .BeginBuild (context .Background (), req , token )
@@ -557,7 +558,7 @@ func parseBakeTargets(targets []string) (bkt bakeTargets) {
557
558
}
558
559
559
560
// printSaveHelp prints instructions to pull or push the saved targets.
560
- func printSaveHelp (project , buildID , progressMode string , requestedTargets []string ) {
561
+ func printSaveHelp (project , buildID , progressMode string , requestedTargets , additionalTags []string ) {
561
562
if progressMode != progress .PrinterModeQuiet {
562
563
fmt .Fprintln (os .Stderr )
563
564
saved := "target"
@@ -573,6 +574,47 @@ func printSaveHelp(project, buildID, progressMode string, requestedTargets []str
573
574
targets := strings .Join (requestedTargets , "," )
574
575
fmt .Fprintf (os .Stderr , "Saved %s: %s\n " , saved , targets )
575
576
fmt .Fprintf (os .Stderr , "\t To pull: depot pull --project %s %s\n " , project , buildID )
577
+
578
+ if len (additionalTags ) > 1 {
579
+ fmt .Fprintf (os .Stderr , "\t To pull save-tags:\n " )
580
+ fmt .Fprintf (os .Stderr , "\t \t docker login registry.depot.dev -u x-token -p $(depot pull-token)\n " )
581
+ fmt .Fprintln (os .Stderr )
582
+
583
+ // the api will send multiple of the same tag back for each target
584
+ if len (requestedTargets ) > 0 {
585
+ seenTags := map [string ]struct {}{}
586
+ for _ , target := range requestedTargets {
587
+ if target == "default" {
588
+ continue
589
+ }
590
+
591
+ for _ , tag := range additionalTags {
592
+ if strings .Contains (tag , buildID ) {
593
+ continue
594
+ }
595
+
596
+ trueTag := tag + "-" + target
597
+ if _ , ok := seenTags [trueTag ]; ok {
598
+ continue
599
+ }
600
+ seenTags [trueTag ] = struct {}{}
601
+
602
+ fmt .Fprintf (os .Stderr , "\t \t docker pull %s\n " , trueTag )
603
+ }
604
+ }
605
+ } else {
606
+ for _ , tag := range additionalTags {
607
+ if strings .Contains (tag , buildID ) {
608
+ continue
609
+ }
610
+
611
+ fmt .Fprintf (os .Stderr , "\t \t docker pull %s\n " , tag )
612
+ }
613
+ }
614
+
615
+ fmt .Fprintln (os .Stderr )
616
+ }
617
+
576
618
fmt .Fprintf (os .Stderr , "\t To push: depot push %s--project %s --tag <REPOSITORY:TAG> %s\n " , targetUsage , project , buildID )
577
619
}
578
620
}
0 commit comments