From aa91402b810acf10cc5cbefa72cf54ea90150718 Mon Sep 17 00:00:00 2001 From: Ulysses Souza Date: Thu, 4 Mar 2021 22:26:43 -0300 Subject: [PATCH] Add quiet mode to progress printer Signed-off-by: Ulysses Souza --- util/progress/printer.go | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/util/progress/printer.go b/util/progress/printer.go index ec627191690a..b9700135075f 100644 --- a/util/progress/printer.go +++ b/util/progress/printer.go @@ -9,6 +9,12 @@ import ( "github.com/moby/buildkit/util/progress/progressui" ) +const ( + PrinterModeAuto = "auto" + PrinterModeTty = "tty" + PrinterModeQuiet = "quiet" +) + type Printer struct { status chan *client.SolveStatus done <-chan struct{} @@ -34,15 +40,25 @@ func NewPrinter(ctx context.Context, out console.File, mode string) *Printer { done: doneCh, } - if v := os.Getenv("BUILDKIT_PROGRESS"); v != "" && mode == "auto" { + if v := os.Getenv("BUILDKIT_PROGRESS"); v != "" && mode == PrinterModeAuto { mode = v } go func() { var c console.Console - if cons, err := console.ConsoleFromFile(out); err == nil && (mode == "auto" || mode == "tty") { - c = cons + switch mode { + case PrinterModeQuiet: + devNull, err := os.Open(os.DevNull) + if err == nil { + out = devNull + } + fallthrough + case PrinterModeAuto, PrinterModeTty: + if cons, err := console.ConsoleFromFile(out); err == nil { + c = cons + } } + // not using shared context to not disrupt display but let is finish reporting errors pw.err = progressui.DisplaySolveStatus(ctx, "", c, out, statusCh) close(doneCh)