package cluster

import (
	"fmt"
	"io"
	"strings"

	"source.monogon.dev/metropolis/pkg/logbuffer"
)

// prefixedStdio is a io.ReadWriter which splits written bytes into lines,
// prefixes them with some known prefix, and spits them to os.Stdout.
//
// io.Reader is implemented for compatibility with code which expects an
// io.ReadWriter, but always returns EOF.
type prefixedStdio struct {
	*logbuffer.LineBuffer
}

// newPrefixedStdio returns a prefixedStdio that prefixes all lines with <num>|,
// used to distinguish different VMs used within the launch codebase.
func newPrefixedStdio(num int) prefixedStdio {
	return prefixedStdio{
		logbuffer.NewLineBuffer(1024, func(l *logbuffer.Line) {
			s := strings.TrimRight(l.String(), " \t\n\r")
			s = strings.TrimLeft(s, "\n\r\t")
			// TODO(q3k): don't just skip lines containing escape sequences, strip the
			// sequences out. Or stop parsing qemu logs and instead dial log endpoint in
			// spawned nodes.
			if strings.Contains(s, "\u001b") {
				return
			}
			fmt.Printf("%02d| %s\n", num, s)
		}),
	}
}

func (p prefixedStdio) Read(_ []byte) (int, error) {
	return 0, io.EOF
}
