Files
finally-a-monolithic-linux-…/app/common/console.go
T
2026-08-07 14:49:21 -07:00

51 lines
955 B
Go

package common
import (
"fmt"
"strings"
)
type Terminal interface {
Start() error
Header(string) error
Subheader(string) error
Print(string) error
End() error
}
type StringBuilderTerminal struct {
sb *strings.Builder
}
func NewTerminal() Terminal {
return &StringBuilderTerminal{
sb: &strings.Builder{},
}
}
func (t *StringBuilderTerminal) Start() error {
_, err := fmt.Fprint(t.sb, "\033[H")
return err
}
func (t *StringBuilderTerminal) Header(header string) error {
_, err := fmt.Fprintf(t.sb, "=== %s ===\033[K\n", header)
return err
}
func (t *StringBuilderTerminal) Subheader(subheader string) error {
_, err := fmt.Fprintf(t.sb, "--- %s ---\033[K\n", subheader)
return err
}
func (t *StringBuilderTerminal) Print(line string) error {
_, err := fmt.Fprintf(t.sb, "%s\033[K\n", line)
return err
}
func (t *StringBuilderTerminal) End() error {
fmt.Fprint(t.sb, "\033[0J")
_, err := fmt.Print(t.sb.String())
return err
}