diff --git a/go.mod b/go.mod index 37fe100fa..0b55cac82 100644 --- a/go.mod +++ b/go.mod @@ -58,7 +58,7 @@ require ( github.com/bugsnag/bugsnag-go v1.5.0 // indirect github.com/cenkalti/backoff/v4 v4.1.2 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect - github.com/cloudflare/cfssl v1.4.1 // indirect + github.com/cloudflare/cfssl v1.4.1 github.com/containerd/continuity v0.3.0 // indirect github.com/containerd/ttrpc v1.1.1 // indirect github.com/containerd/typeurl v1.0.2 // indirect diff --git a/pkg/progress/writer.go b/pkg/progress/writer.go index d2d18fe2e..422fe2816 100644 --- a/pkg/progress/writer.go +++ b/pkg/progress/writer.go @@ -21,6 +21,7 @@ import ( "io" "sync" + "github.com/cloudflare/cfssl/log" "github.com/docker/compose/v2/pkg/api" "github.com/containerd/console" @@ -118,11 +119,16 @@ func NewWriter(ctx context.Context, out io.Writer, progressTitle string) (Writer if !ok { dryRun = false } - if Mode == ModeAuto && isTerminal { - return newTTYWriter(out.(console.File), dryRun, progressTitle) + f, isConsole := out.(console.File) // see https://github.com/docker/compose/issues/10560 + if Mode == ModeAuto && isTerminal && isConsole { + return newTTYWriter(f, dryRun, progressTitle) } if Mode == ModeTTY { - return newTTYWriter(out.(console.File), dryRun, progressTitle) + if !isConsole { + log.Warning("Terminal is not a POSIX console") + } else { + return newTTYWriter(f, dryRun, progressTitle) + } } return &plainWriter{ out: out,