88 lines
1.9 KiB
Go
88 lines
1.9 KiB
Go
package io
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/cli/cli/v2/pkg/iostreams"
|
|
"github.com/cli/cli/v2/utils"
|
|
)
|
|
|
|
type Handler struct {
|
|
ColorScheme *iostreams.ColorScheme
|
|
IO *iostreams.IOStreams
|
|
debugEnabled bool
|
|
}
|
|
|
|
func NewHandler(io *iostreams.IOStreams) *Handler {
|
|
enabled, _ := utils.IsDebugEnabled()
|
|
|
|
return &Handler{
|
|
ColorScheme: io.ColorScheme(),
|
|
IO: io,
|
|
debugEnabled: enabled,
|
|
}
|
|
}
|
|
|
|
func NewTestHandler() *Handler {
|
|
testIO, _, _, _ := iostreams.Test()
|
|
return NewHandler(testIO)
|
|
}
|
|
|
|
// Printf writes the formatted arguments to the stderr writer.
|
|
func (h *Handler) Printf(f string, v ...interface{}) (int, error) {
|
|
if !h.IO.IsStdoutTTY() {
|
|
return 0, nil
|
|
}
|
|
return fmt.Fprintf(h.IO.ErrOut, f, v...)
|
|
}
|
|
|
|
func (h *Handler) OutPrintf(f string, v ...interface{}) (int, error) {
|
|
return fmt.Fprintf(h.IO.Out, f, v...)
|
|
}
|
|
|
|
// Println writes the arguments to the stderr writer with a newline at the end.
|
|
func (h *Handler) Println(v ...interface{}) (int, error) {
|
|
if !h.IO.IsStdoutTTY() {
|
|
return 0, nil
|
|
}
|
|
return fmt.Fprintln(h.IO.ErrOut, v...)
|
|
}
|
|
|
|
func (h *Handler) OutPrintln(v ...interface{}) (int, error) {
|
|
return fmt.Fprintln(h.IO.Out, v...)
|
|
}
|
|
|
|
func (h *Handler) VerbosePrint(msg string) (int, error) {
|
|
if !h.debugEnabled || !h.IO.IsStdoutTTY() {
|
|
return 0, nil
|
|
}
|
|
|
|
return fmt.Fprintln(h.IO.ErrOut, msg)
|
|
}
|
|
|
|
func (h *Handler) VerbosePrintf(f string, v ...interface{}) (int, error) {
|
|
if !h.debugEnabled || !h.IO.IsStdoutTTY() {
|
|
return 0, nil
|
|
}
|
|
return fmt.Fprintf(h.IO.ErrOut, f, v...)
|
|
}
|
|
|
|
func (h *Handler) PrintBulletPoints(rows [][]string) (int, error) {
|
|
if !h.IO.IsStdoutTTY() {
|
|
return 0, nil
|
|
}
|
|
maxColLen := 0
|
|
for _, row := range rows {
|
|
if len(row[0]) > maxColLen {
|
|
maxColLen = len(row[0])
|
|
}
|
|
}
|
|
|
|
info := ""
|
|
for _, row := range rows {
|
|
dots := strings.Repeat(".", maxColLen-len(row[0]))
|
|
info += fmt.Sprintf("%s:%s %s\n", row[0], dots, row[1])
|
|
}
|
|
return fmt.Fprintln(h.IO.ErrOut, info)
|
|
}
|