Add quiet mode to progress printer

Signed-off-by: Ulysses Souza <ulyssessouza@gmail.com>
pull/558/head
Ulysses Souza 4 years ago
parent 7d2e30096b
commit 55d5b80dfe

@ -2,6 +2,8 @@ package progress
import ( import (
"context" "context"
"io"
"io/ioutil"
"os" "os"
"github.com/containerd/console" "github.com/containerd/console"
@ -9,6 +11,13 @@ import (
"github.com/moby/buildkit/util/progress/progressui" "github.com/moby/buildkit/util/progress/progressui"
) )
const (
PrinterModeAuto = "auto"
PrinterModeTty = "tty"
PrinterModePlain = "plain"
PrinterModeQuiet = "quiet"
)
type Printer struct { type Printer struct {
status chan *client.SolveStatus status chan *client.SolveStatus
done <-chan struct{} done <-chan struct{}
@ -34,17 +43,23 @@ func NewPrinter(ctx context.Context, out console.File, mode string) *Printer {
done: doneCh, done: doneCh,
} }
if v := os.Getenv("BUILDKIT_PROGRESS"); v != "" && mode == "auto" { if v := os.Getenv("BUILDKIT_PROGRESS"); v != "" && mode == PrinterModeAuto {
mode = v mode = v
} }
go func() { go func() {
var c console.Console var c console.Console
if cons, err := console.ConsoleFromFile(out); err == nil && (mode == "auto" || mode == "tty") { var w io.Writer = out
c = cons switch mode {
case PrinterModeQuiet:
w = ioutil.Discard
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 // not using shared context to not disrupt display but let is finish reporting errors
pw.err = progressui.DisplaySolveStatus(ctx, "", c, out, statusCh) pw.err = progressui.DisplaySolveStatus(ctx, "", c, w, statusCh)
close(doneCh) close(doneCh)
}() }()
return pw return pw

Loading…
Cancel
Save