mirror of
https://github.com/docker/cli.git
synced 2026-01-13 18:22:35 +03:00
Go maintainers started to unconditionally update the minimum go version for golang.org/x/ dependencies to go1.23, which means that we'll no longer be able to support any version below that when updating those dependencies; > all: upgrade go directive to at least 1.23.0 [generated] > > By now Go 1.24.0 has been released, and Go 1.22 is no longer supported > per the Go Release Policy (https://go.dev/doc/devel/release#policy). > > For golang/go#69095. This updates our minimum version to go1.23, as we won't be able to maintain compatibility with older versions because of the above. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
63 lines
1.1 KiB
Go
63 lines
1.1 KiB
Go
// FIXME(thaJeztah): remove once we are a module; the go:build directive prevents go from downgrading language version to go1.16:
|
|
//go:build go1.23
|
|
|
|
package tui
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/docker/cli/cli/streams"
|
|
"github.com/morikuni/aec"
|
|
)
|
|
|
|
type Output struct {
|
|
*streams.Out
|
|
isTerminal bool
|
|
}
|
|
|
|
type terminalPrintable interface {
|
|
String(isTerminal bool) string
|
|
}
|
|
|
|
func NewOutput(out *streams.Out) Output {
|
|
return Output{
|
|
Out: out,
|
|
isTerminal: out.IsTerminal(),
|
|
}
|
|
}
|
|
|
|
func (o Output) Color(clr aec.ANSI) aec.ANSI {
|
|
if o.isTerminal {
|
|
return clr
|
|
}
|
|
return ColorNone
|
|
}
|
|
|
|
func (o Output) Sprint(all ...any) string {
|
|
var out []any
|
|
for _, p := range all {
|
|
if s, ok := p.(terminalPrintable); ok {
|
|
out = append(out, s.String(o.isTerminal))
|
|
} else {
|
|
out = append(out, p)
|
|
}
|
|
}
|
|
return fmt.Sprint(out...)
|
|
}
|
|
|
|
func (o Output) PrintlnWithColor(clr aec.ANSI, args ...any) {
|
|
msg := o.Sprint(args...)
|
|
if o.isTerminal {
|
|
msg = clr.Apply(msg)
|
|
}
|
|
_, _ = fmt.Fprintln(o.Out, msg)
|
|
}
|
|
|
|
func (o Output) Println(p ...any) {
|
|
_, _ = fmt.Fprintln(o.Out, o.Sprint(p...))
|
|
}
|
|
|
|
func (o Output) Print(p ...any) {
|
|
_, _ = fmt.Print(o.Out, o.Sprint(p...))
|
|
}
|