From 1cfa87002c588d141b0ee3b0521070f51c02f478 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 31 Mar 2014 12:46:46 -0700 Subject: [PATCH] beam/examples/beamsh: fix 'print' to be pass-through Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index 535377094d..72e506a90b 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -20,7 +20,6 @@ import ( ) var rootPlugins = []string{ - "devnull", "stdio", } @@ -529,12 +528,23 @@ func GetHandler(name string) Handler { } else if name == "print" { return func(args []string, in beam.Receiver, out beam.Sender) { for { - _, a, err := in.Receive() + payload, a, err := in.Receive() if err != nil { return } - if a != nil { - io.Copy(os.Stdout, a) + // Skip commands + if a != nil && data.Message(payload).Get("cmd") == nil { + dup, err := beam.SendPipe(out, payload) + if err != nil { + a.Close() + return + } + io.Copy(io.MultiWriter(os.Stdout, dup), a) + dup.Close() + } else { + if err := out.Send(payload, a); err != nil { + return + } } } }