diff --git a/go.mod b/go.mod index 65d2981e..0c4d63c0 100644 --- a/go.mod +++ b/go.mod @@ -23,6 +23,7 @@ require ( github.com/spf13/afero v1.14.0 github.com/urfave/cli-docs/v3 v3.0.0-alpha6 github.com/urfave/cli/v3 v3.3.3 + golang.org/x/term v0.32.0 gopkg.in/yaml.v3 v3.0.1 ) @@ -161,7 +162,6 @@ require ( golang.org/x/oauth2 v0.30.0 // indirect golang.org/x/sync v0.14.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/term v0.32.0 // indirect golang.org/x/text v0.25.0 // indirect golang.org/x/time v0.11.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect diff --git a/internal/output/color.go b/internal/output/color.go index 31a08080..afd4b0bf 100644 --- a/internal/output/color.go +++ b/internal/output/color.go @@ -4,10 +4,12 @@ package output import ( "bytes" + "os" chroma "github.com/alecthomas/chroma/v2/quick" "github.com/sirupsen/logrus" "github.com/urfave/cli/v3" + "golang.org/x/term" "github.com/go-vela/cli/internal" ) @@ -29,6 +31,11 @@ func ColorOptionsFromCLIContext(c *cli.Command) ColorOptions { opts.Enabled = internal.StringToBool(c.String(internal.FlagColor)) + // if it's not a terminal, don't use color + if !term.IsTerminal(int(os.Stdout.Fd())) { + opts.Enabled = false + } + if c.IsSet(internal.FlagColorFormat) { opts.Format = c.String(internal.FlagColorFormat) }