Jelajahi Sumber

Use io.WriteCloser instead of *os.File in DockerLocalConn so we can use it with standard writers and pipes

Guillaume J. Charmes 12 tahun lalu
induk
melakukan
e6e9c1cd62
1 mengubah file dengan 10 tambahan dan 6 penghapusan
  1. 10 6
      rcli/types.go

+ 10 - 6
rcli/types.go

@@ -33,24 +33,28 @@ type DockerConn interface {
 }
 
 type DockerLocalConn struct {
-	file       *os.File
+	writer     io.WriteCloser
 	savedState *term.State
 }
 
-func NewDockerLocalConn(output *os.File) *DockerLocalConn {
-	return &DockerLocalConn{file: output}
+func NewDockerLocalConn(w io.WriteCloser) *DockerLocalConn {
+	return &DockerLocalConn{
+		writer: w,
+	}
 }
 
-func (c *DockerLocalConn) Read(b []byte) (int, error) { return c.file.Read(b) }
+func (c *DockerLocalConn) Read(b []byte) (int, error) {
+	return 0, fmt.Errorf("DockerLocalConn does not implement Read()")
+}
 
-func (c *DockerLocalConn) Write(b []byte) (int, error) { return c.file.Write(b) }
+func (c *DockerLocalConn) Write(b []byte) (int, error) { return c.writer.Write(b) }
 
 func (c *DockerLocalConn) Close() error {
 	if c.savedState != nil {
 		RestoreTerminal(c.savedState)
 		c.savedState = nil
 	}
-	return c.file.Close()
+	return c.writer.Close()
 }
 
 func (c *DockerLocalConn) CloseWrite() error { return nil }