From 133655a9583d06eab3557fcd36260906a9b1b3ff Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Sat, 31 Dec 2016 15:05:35 -0800 Subject: [PATCH] output stderr from execution of zero-epwing --- epwing.go | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/epwing.go b/epwing.go index e5448d1..f7a12a2 100644 --- a/epwing.go +++ b/epwing.go @@ -23,9 +23,11 @@ package main import ( + "bufio" "encoding/json" "fmt" "io/ioutil" + "log" "os" "os/exec" "path/filepath" @@ -86,7 +88,39 @@ func epwingExportDb(inputPath, outputDir, title string, stride int, pretty bool) return fmt.Errorf("failed to find zero-epwing in '%s'", toolPath) } - data, err = exec.Command(toolPath, inputPath).Output() + cmd := exec.Command(toolPath, inputPath) + + stdout, err := cmd.StdoutPipe() + if err != nil { + return err + } + + stderr, err := cmd.StderrPipe() + if err != nil { + return err + } + + log.Printf("invoking zero-epwing from '%s'...\n", toolPath) + if err := cmd.Start(); err != nil { + return err + } + + go func() { + scanner := bufio.NewScanner(stderr) + for scanner.Scan() { + log.Printf("\t > %s\n", scanner.Text()) + } + }() + + if data, err = ioutil.ReadAll(stdout); err != nil { + return err + } + + if err := cmd.Wait(); err != nil { + return err + } + + log.Println("completed zero-epwing processing") } else { data, err = ioutil.ReadFile(inputPath) }