From 66f1bc01a2e3287bf74b3e86f9dde0574002d59a Mon Sep 17 00:00:00 2001 From: Fredric Silberberg Date: Thu, 9 Oct 2014 19:07:00 -0400 Subject: [PATCH] Updated the printing to follow the new specs --- common.go | 25 ++++++++++++++++++++++++- ls/main.go | 8 ++++---- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/common.go b/common.go index c2cb6ad..f16f56c 100644 --- a/common.go +++ b/common.go @@ -5,6 +5,7 @@ package jsh import ( "encoding/json" "fmt" + "os" ) type JshFrame struct { @@ -22,22 +23,44 @@ func (j JshFrame) ToJson() *string { return &jsonString } +func (j JshFrame) StdOutToJson() *string { + jsonOut, err := json.Marshal(j.StdOut) + if err != nil { + panic(err) + } + jsonString := string(jsonOut) + return &jsonString +} + +func (j JshFrame) StdErrToJson() *string { + jsonOut, err := json.Marshal(j.StdErr) + if err != nil { + panic(err) + } + jsonString := string(jsonOut) + return &jsonString +} + // goroutine for outputing frames. Pass it a channel of pointers to JshFrames, // and it will send "true" to the done channel once you close the queue channel. func OutputFrames(queue chan *JshFrame, done chan bool) { fmt.Printf("[") + fmt.Fprintf(os.Stderr, "[") isFirst := true for { frame, more := <-queue if more { if !isFirst { fmt.Printf(",") + fmt.Fprintf(os.Stderr, ",") } else { isFirst = false } - fmt.Printf(*frame.ToJson()) + fmt.Printf(*frame.StdOutToJson()) + fmt.Fprintf(os.Stderr, *frame.StdErrToJson()) } else { fmt.Printf("]\n") + fmt.Fprintf(os.Stderr, "]\n") done <- true return } diff --git a/ls/main.go b/ls/main.go index 954bd0e..37e3e85 100644 --- a/ls/main.go +++ b/ls/main.go @@ -48,17 +48,17 @@ func main() { root := "." //flag.Arg(0) dir, _ := ioutil.ReadDir(root) - fmt.Printf("[{\"StdOut\": [\n") + fmt.Printf("[\n") if !a_flag { for _, entry := range dir { if entry.Name()[0] != '.' { if !first { - fmt.Printf(",") + fmt.Printf(",\n") } else { first = false } - fmt.Printf("%s\n", get_fileinfo(entry.Name(), size_flag, mode_flag, inode_flag)) + fmt.Printf("%s", get_fileinfo(entry.Name(), size_flag, mode_flag, inode_flag)) } } } else { @@ -71,5 +71,5 @@ func main() { fmt.Printf("%s\n", get_fileinfo(entry.Name(), size_flag, mode_flag, inode_flag)) } } - fmt.Printf("], \"StdErr\": []}]\n") + fmt.Printf("\n]\n") }