diff --git a/commands/bake.go b/commands/bake.go index 6fcde330d1fd..7c1392dd0d48 100644 --- a/commands/bake.go +++ b/commands/bake.go @@ -186,6 +186,7 @@ func runBake(ctx context.Context, dockerCli command.Cli, targets []string, in ba progressMode := progressui.DisplayMode(cFlags.progress) var printer *progress.Printer + printWarningsOnClose := true defer func() { if printer != nil { printer.Wait() @@ -198,7 +199,9 @@ func runBake(ctx context.Context, dockerCli command.Cli, targets []string, in ba progress.WithDesc(progressTextDesc, progressConsoleDesc), progress.WithMetrics(mp, attributes), progress.WithOnClose(func() { - printWarnings(os.Stderr, printer.Warnings(), progressMode) + if printWarningsOnClose { + printWarnings(os.Stderr, printer.Warnings(), progressMode) + } }), ) return err @@ -334,6 +337,13 @@ func runBake(ctx context.Context, dockerCli command.Cli, targets []string, in ba } } + for _, opt := range bo { + if opt.CallFunc != nil { + printWarningsOnClose = false + break + } + } + exp, err := ent.Validate(bo) if err != nil { return err @@ -499,6 +509,10 @@ func runBake(ctx context.Context, dockerCli command.Cli, targets []string, in ba } } + if !printWarningsOnClose { + printWarnings(os.Stderr, printer.Warnings(), progressMode) + } + if exitCode != 0 { return cobrautil.ExitCodeError(exitCode) } diff --git a/commands/build.go b/commands/build.go index 04d20bea6e41..de759a5ac1a1 100644 --- a/commands/build.go +++ b/commands/build.go @@ -408,7 +408,9 @@ func runBuild(ctx context.Context, dockerCli command.Cli, debugOpts debuggerOpti ), progress.WithMetrics(mp, attributes), progress.WithOnClose(func() { - printWarnings(os.Stderr, printer.Warnings(), progressMode) + if opts.CallFunc == nil { + printWarnings(os.Stderr, printer.Warnings(), progressMode) + } }), ) if err != nil { @@ -450,7 +452,9 @@ func runBuild(ctx context.Context, dockerCli command.Cli, debugOpts debuggerOpti } } if opts.CallFunc != nil { - if exitCode, err := printResult(dockerCli.Out(), opts.CallFunc, resp.ExporterResponse, options.target, inputs); err != nil { + exitCode, err := printResult(dockerCli.Out(), opts.CallFunc, resp.ExporterResponse, options.target, inputs) + printWarnings(os.Stderr, printer.Warnings(), progressMode) + if err != nil { return err } else if exitCode != 0 { return cobrautil.ExitCodeError(exitCode)