diff options
Diffstat (limited to 'cli/internal/util/printf.go')
| -rw-r--r-- | cli/internal/util/printf.go | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/cli/internal/util/printf.go b/cli/internal/util/printf.go new file mode 100644 index 0000000..9cd6dce --- /dev/null +++ b/cli/internal/util/printf.go @@ -0,0 +1,63 @@ +// Copyright Thought Machine, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +package util + +import ( + "fmt" + "io" + "os" + + "github.com/vercel/turbo/cli/internal/ui" +) + +// initPrintf sets up the replacements used by printf. +func InitPrintf() { + if !ui.IsTTY { + replacements = map[string]string{} + } +} + +// printf is used throughout this package to print something to stderr with some +// replacements for pseudo-shell variables for ANSI formatting codes. +func Sprintf(format string, args ...interface{}) string { + return os.Expand(fmt.Sprintf(format, args...), replace) +} + +func Printf(format string, args ...interface{}) { + fmt.Fprint(os.Stderr, os.Expand(fmt.Sprintf(format, args...), replace)) +} + +func Fprintf(writer io.Writer, format string, args ...interface{}) { + fmt.Fprint(writer, os.Expand(fmt.Sprintf(format, args...), replace)) +} + +func replace(s string) string { + return replacements[s] +} + +// These are the standard set of replacements we use. +var replacements = map[string]string{ + "BOLD": "\x1b[1m", + "BOLD_GREY": "\x1b[30;1m", + "BOLD_RED": "\x1b[31;1m", + "BOLD_GREEN": "\x1b[32;1m", + "BOLD_YELLOW": "\x1b[33;1m", + "BOLD_BLUE": "\x1b[34;1m", + "BOLD_MAGENTA": "\x1b[35;1m", + "BOLD_CYAN": "\x1b[36;1m", + "BOLD_WHITE": "\x1b[37;1m", + "UNDERLINE": "\x1b[4m", + "GREY": "\x1b[2m", + "RED": "\x1b[31m", + "GREEN": "\x1b[32m", + "YELLOW": "\x1b[33m", + "BLUE": "\x1b[34m", + "MAGENTA": "\x1b[35m", + "CYAN": "\x1b[36m", + "WHITE": "\x1b[37m", + "WHITE_ON_RED": "\x1b[37;41;1m", + "RED_NO_BG": "\x1b[31;49;1m", + "RESET": "\x1b[0m", + "ERASE_AFTER": "\x1b[K", + "CLEAR_END": "\x1b[0J", +} |
