1616package builder
1717
1818import (
19+ "bytes"
1920 "encoding/json"
2021 "fmt"
2122 "regexp"
@@ -76,12 +77,16 @@ func (b *Builder) checkSizeAdvanced() (ExecutablesFileSections, error) {
7677 if err != nil {
7778 return nil , errors .New (tr ("Error while determining sketch size: %s" , err ))
7879 }
79-
80- verboseInfo , out , _ , err := utils .ExecCommand (b .logger .Verbose (), b .logger .Stdout (), b .logger .Stderr (), command , utils .Capture /* stdout */ , utils .Show /* stderr */ )
8180 if b .logger .Verbose () {
82- b .logger .Info (string ( verboseInfo ))
81+ b .logger .Info (utils . PrintableCommand ( command . GetArgs () ))
8382 }
84- if err != nil {
83+ out := & bytes.Buffer {}
84+ command .RedirectStdoutTo (out )
85+ command .RedirectStderrTo (b .logger .Stderr ())
86+ if err := command .Start (); err != nil {
87+ return nil , errors .New (tr ("Error while determining sketch size: %s" , err ))
88+ }
89+ if err := command .Wait (); err != nil {
8590 return nil , errors .New (tr ("Error while determining sketch size: %s" , err ))
8691 }
8792
@@ -100,7 +105,7 @@ func (b *Builder) checkSizeAdvanced() (ExecutablesFileSections, error) {
100105 }
101106
102107 var resp AdvancedSizerResponse
103- if err := json .Unmarshal (out , & resp ); err != nil {
108+ if err := json .Unmarshal (out . Bytes () , & resp ); err != nil {
104109 return nil , errors .New (tr ("Error while determining sketch size: %s" , err ))
105110 }
106111
@@ -209,15 +214,22 @@ func (b *Builder) execSizeRecipe(properties *properties.Map) (textSize int, data
209214 resErr = fmt .Errorf (tr ("Error while determining sketch size: %s" ), err )
210215 return
211216 }
212-
213- verboseInfo , out , _ , err := utils .ExecCommand (b .logger .Verbose (), b .logger .Stdout (), b .logger .Stderr (), command , utils .Capture /* stdout */ , utils .Show /* stderr */ )
214217 if b .logger .Verbose () {
215- b .logger .Info (string ( verboseInfo ))
218+ b .logger .Info (utils . PrintableCommand ( command . GetArgs () ))
216219 }
217- if err != nil {
220+ commandStdout := & bytes.Buffer {}
221+ command .RedirectStdoutTo (commandStdout )
222+ command .RedirectStderrTo (b .logger .Stderr ())
223+ if err := command .Start (); err != nil {
218224 resErr = fmt .Errorf (tr ("Error while determining sketch size: %s" ), err )
219225 return
220226 }
227+ if err := command .Wait (); err != nil {
228+ resErr = fmt .Errorf (tr ("Error while determining sketch size: %s" ), err )
229+ return
230+ }
231+
232+ out := commandStdout .Bytes ()
221233
222234 // force multiline match prepending "(?m)" to the actual regexp
223235 // return an error if RECIPE_SIZE_REGEXP doesn't exist
0 commit comments