diff --git a/cmd/task/console_win.go b/cmd/task/console_win.go new file mode 100644 index 0000000000..71c52dfb82 --- /dev/null +++ b/cmd/task/console_win.go @@ -0,0 +1,22 @@ +//go:build windows +// +build windows + +package main + +import ( + "os" + "runtime" + + "golang.org/x/sys/windows" +) + +func init() { + // Ensure that Windows console handles ANSI escape-codes correctly. + if runtime.GOOS == "windows" { + stdout := windows.Handle(os.Stdout.Fd()) + var originalMode uint32 + if err := windows.GetConsoleMode(stdout, &originalMode); err == nil { + windows.SetConsoleMode(stdout, originalMode|windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING) + } + } +}