writer.go 795 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package commands
  2. import "io"
  3. // StringWriter is how a command talks back to whoever invoked it: one stream, which the
  4. // ssh surface points at its channel.
  5. type StringWriter interface {
  6. WriteLine(string) error
  7. Write(string) error
  8. WriteBytes([]byte) error
  9. GetWriter() io.Writer
  10. }
  11. type stringWriter struct {
  12. w io.Writer
  13. }
  14. // NewStringWriter returns a StringWriter that writes to w.
  15. func NewStringWriter(w io.Writer) StringWriter {
  16. return &stringWriter{w: w}
  17. }
  18. func (w *stringWriter) WriteLine(s string) error {
  19. return w.Write(s + "\n")
  20. }
  21. func (w *stringWriter) Write(s string) error {
  22. _, err := w.w.Write([]byte(s))
  23. return err
  24. }
  25. func (w *stringWriter) WriteBytes(b []byte) error {
  26. _, err := w.w.Write(b)
  27. return err
  28. }
  29. func (w *stringWriter) GetWriter() io.Writer {
  30. return w.w
  31. }