package namespaces

import (
	"io"
	"os"
	"os/exec"
)

type Terminal interface {
	io.Closer
	SetMaster(*os.File)
	Attach(*exec.Cmd) error
	Resize(h, w int) error
}

func NewTerminal(stdin io.Reader, stdout, stderr io.Writer, tty bool) Terminal {
	if tty {
		return &TtyTerminal{
			stdin:  stdin,
			stdout: stdout,
			stderr: stderr,
		}
	}
	return &StdTerminal{
		stdin:  stdin,
		stdout: stdout,
		stderr: stderr,
	}
}