51 lines
955 B
Go
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
|
|
}
|