16
16
package builder
17
17
18
18
import (
19
+ "bytes"
19
20
"encoding/json"
20
21
"fmt"
21
22
"regexp"
@@ -76,12 +77,16 @@ func (b *Builder) checkSizeAdvanced() (ExecutablesFileSections, error) {
76
77
if err != nil {
77
78
return nil , errors .New (tr ("Error while determining sketch size: %s" , err ))
78
79
}
79
-
80
- verboseInfo , out , _ , err := utils .ExecCommand (b .logger .Verbose (), b .logger .Stdout (), b .logger .Stderr (), command , utils .Capture /* stdout */ , utils .Show /* stderr */ )
81
80
if b .logger .Verbose () {
82
- b .logger .Info (string ( verboseInfo ))
81
+ b .logger .Info (utils . PrintableCommand ( command . GetArgs () ))
83
82
}
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 {
85
90
return nil , errors .New (tr ("Error while determining sketch size: %s" , err ))
86
91
}
87
92
@@ -100,7 +105,7 @@ func (b *Builder) checkSizeAdvanced() (ExecutablesFileSections, error) {
100
105
}
101
106
102
107
var resp AdvancedSizerResponse
103
- if err := json .Unmarshal (out , & resp ); err != nil {
108
+ if err := json .Unmarshal (out . Bytes () , & resp ); err != nil {
104
109
return nil , errors .New (tr ("Error while determining sketch size: %s" , err ))
105
110
}
106
111
@@ -209,15 +214,22 @@ func (b *Builder) execSizeRecipe(properties *properties.Map) (textSize int, data
209
214
resErr = fmt .Errorf (tr ("Error while determining sketch size: %s" ), err )
210
215
return
211
216
}
212
-
213
- verboseInfo , out , _ , err := utils .ExecCommand (b .logger .Verbose (), b .logger .Stdout (), b .logger .Stderr (), command , utils .Capture /* stdout */ , utils .Show /* stderr */ )
214
217
if b .logger .Verbose () {
215
- b .logger .Info (string ( verboseInfo ))
218
+ b .logger .Info (utils . PrintableCommand ( command . GetArgs () ))
216
219
}
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 {
218
224
resErr = fmt .Errorf (tr ("Error while determining sketch size: %s" ), err )
219
225
return
220
226
}
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 ()
221
233
222
234
// force multiline match prepending "(?m)" to the actual regexp
223
235
// return an error if RECIPE_SIZE_REGEXP doesn't exist
0 commit comments