yay/pkg/text/service.go
Jo 8916cd174b
refactor(yay): move cfg inside of runtime (#2259)
* rework relationship between runtime and cfg

* separate runtime from cfg

* simplify instantiation logic

* move installer to appropriate package

* move operator to sync package

* add tests for srcinfo service

* consolidate srcinfo service in sync

* add logger to srcinfo

* add logger to preparer

* remove unused text functions

* remove remaining text.* from srcinfo

* remove global logger parts

* remove global org method exports

* remove global logger

* move text->input

* add rule to prevent fmt.Print

* update golangci go version

* remove outdated FAQs

* remove outdated FAQs
2023-08-06 21:39:41 +02:00

101 lines
2 KiB
Go

package text
import (
"fmt"
"io"
)
const (
arrow = "==>"
smallArrow = " ->"
opSymbol = "::"
)
type Logger struct {
name string
Debug bool
stdout io.Writer
stderr io.Writer
r io.Reader
}
func NewLogger(stdout, stderr io.Writer, r io.Reader, debug bool, name string) *Logger {
return &Logger{
Debug: debug,
name: name,
r: r,
stderr: stderr,
stdout: stdout,
}
}
func (l *Logger) Child(name string) *Logger {
return NewLogger(l.stdout, l.stderr, l.r, l.Debug, name)
}
func (l *Logger) Debugln(a ...any) {
if !l.Debug {
return
}
l.Println(append([]interface{}{
Bold(yellow(fmt.Sprintf("[DEBUG:%s]", l.name))),
}, a...)...)
}
func (l *Logger) OperationInfoln(a ...any) {
l.Println(l.SprintOperationInfo(a...))
}
func (l *Logger) OperationInfo(a ...any) {
l.Print(l.SprintOperationInfo(a...))
}
func (l *Logger) SprintOperationInfo(a ...any) string {
return fmt.Sprint(append([]interface{}{Bold(Cyan(opSymbol + " ")), boldCode}, a...)...) + ResetCode
}
func (l *Logger) Info(a ...any) {
l.Print(append([]interface{}{Bold(Green(arrow + " "))}, a...)...)
}
func (l *Logger) Infoln(a ...any) {
l.Println(append([]interface{}{Bold(Green(arrow))}, a...)...)
}
func (l *Logger) Warn(a ...any) {
l.Print(l.SprintWarn(a...))
}
func (l *Logger) Warnln(a ...any) {
l.Println(l.SprintWarn(a...))
}
func (l *Logger) SprintWarn(a ...any) string {
return fmt.Sprint(append([]interface{}{Bold(yellow(smallArrow + " "))}, a...)...)
}
func (l *Logger) Error(a ...any) {
fmt.Fprint(l.stderr, l.SprintError(a...))
}
func (l *Logger) Errorln(a ...any) {
fmt.Fprintln(l.stderr, l.SprintError(a...))
}
func (l *Logger) SprintError(a ...any) string {
return fmt.Sprint(append([]interface{}{Bold(Red(smallArrow + " "))}, a...)...)
}
func (l *Logger) Printf(format string, a ...any) {
fmt.Fprintf(l.stdout, format, a...)
}
func (l *Logger) Println(a ...any) {
fmt.Fprintln(l.stdout, a...)
}
func (l *Logger) Print(a ...any) {
fmt.Fprint(l.stdout, a...)
}