Skip to content

Commit 18a112e

Browse files
committed
detect terminal is not a console.File to avoid a panic
Signed-off-by: Nicolas De Loof <[email protected]>
1 parent dc01b98 commit 18a112e

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ require (
5858
github.com/bugsnag/bugsnag-go v1.5.0 // indirect
5959
github.com/cenkalti/backoff/v4 v4.1.2 // indirect
6060
github.com/cespare/xxhash/v2 v2.1.2 // indirect
61-
github.com/cloudflare/cfssl v1.4.1 // indirect
61+
github.com/cloudflare/cfssl v1.4.1
6262
github.com/containerd/continuity v0.3.0 // indirect
6363
github.com/containerd/ttrpc v1.1.1 // indirect
6464
github.com/containerd/typeurl v1.0.2 // indirect

pkg/progress/writer.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"io"
2222
"sync"
2323

24+
"github.com/cloudflare/cfssl/log"
2425
"github.com/docker/compose/v2/pkg/api"
2526

2627
"github.com/containerd/console"
@@ -118,11 +119,16 @@ func NewWriter(ctx context.Context, out io.Writer, progressTitle string) (Writer
118119
if !ok {
119120
dryRun = false
120121
}
121-
if Mode == ModeAuto && isTerminal {
122-
return newTTYWriter(out.(console.File), dryRun, progressTitle)
122+
f, isConsole := out.(console.File) // see https://github.com/docker/compose/issues/10560
123+
if Mode == ModeAuto && isTerminal && isConsole {
124+
return newTTYWriter(f, dryRun, progressTitle)
123125
}
124126
if Mode == ModeTTY {
125-
return newTTYWriter(out.(console.File), dryRun, progressTitle)
127+
if !isConsole {
128+
log.Warning("Terminal is not a POSIX console")
129+
} else {
130+
return newTTYWriter(f, dryRun, progressTitle)
131+
}
126132
}
127133
return &plainWriter{
128134
out: out,

0 commit comments

Comments
 (0)