From 8db07e55d4757594c20a3ace63043fda3def5bc4 Mon Sep 17 00:00:00 2001 From: Techno Freak Date: Sun, 28 Jan 2024 21:36:00 +0300 Subject: [PATCH 1/2] Fix prettylog piping --- cmd/prettylog/prettylog.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/cmd/prettylog/prettylog.go b/cmd/prettylog/prettylog.go index 9b8b43c6..70a00141 100644 --- a/cmd/prettylog/prettylog.go +++ b/cmd/prettylog/prettylog.go @@ -19,7 +19,18 @@ func main() { writer := zerolog.NewConsoleWriter() if isInputFromPipe() { - _, _ = io.Copy(writer, os.Stdin) + scanner := bufio.NewScanner(os.Stdin) + for scanner.Scan() { + bytesToWrite := scanner.Bytes() + _, err := writer.Write(bytesToWrite) + if err != nil { + if errors.Is(err, io.EOF) { + break + } + + fmt.Printf("%s\n", bytesToWrite) + } + } } else if len(os.Args) > 1 { for _, filename := range os.Args[1:] { // Scan each line from filename and write it into writer From 70ac3e8da769e46474729e7084ca2e68c44683ab Mon Sep 17 00:00:00 2001 From: Techno Freak Date: Wed, 31 Jan 2024 16:09:57 +0300 Subject: [PATCH 2/2] Review fixes --- cmd/prettylog/prettylog.go | 47 ++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/cmd/prettylog/prettylog.go b/cmd/prettylog/prettylog.go index 70a00141..d68a1bbe 100644 --- a/cmd/prettylog/prettylog.go +++ b/cmd/prettylog/prettylog.go @@ -15,42 +15,39 @@ func isInputFromPipe() bool { return fileInfo.Mode()&os.ModeCharDevice == 0 } -func main() { +func processInput(reader io.Reader) error { writer := zerolog.NewConsoleWriter() - if isInputFromPipe() { - scanner := bufio.NewScanner(os.Stdin) - for scanner.Scan() { - bytesToWrite := scanner.Bytes() - _, err := writer.Write(bytesToWrite) - if err != nil { - if errors.Is(err, io.EOF) { - break - } - - fmt.Printf("%s\n", bytesToWrite) + scanner := bufio.NewScanner(reader) + for scanner.Scan() { + bytesToWrite := scanner.Bytes() + _, err := writer.Write(bytesToWrite) + if err != nil { + if errors.Is(err, io.EOF) { + break } + + fmt.Printf("%s\n", bytesToWrite) } + } + + return scanner.Err() +} + +func main() { + + if isInputFromPipe() { + _ = processInput(os.Stdin) } else if len(os.Args) > 1 { for _, filename := range os.Args[1:] { // Scan each line from filename and write it into writer - r, err := os.Open(filename) + reader, err := os.Open(filename) if err != nil { fmt.Printf("%s open: %v", filename, err) os.Exit(1) } - scanner := bufio.NewScanner(r) - for scanner.Scan() { - _, err = writer.Write(scanner.Bytes()) - if err != nil { - if errors.Is(err, io.EOF) { - break - } - fmt.Printf("%s write: %v", filename, err) - os.Exit(1) - } - } - if err := scanner.Err(); err != nil { + + if err := processInput(reader); err != nil { fmt.Printf("%s scan: %v", filename, err) os.Exit(1) }