@@ -21,6 +21,7 @@ package firmware
21
21
22
22
import (
23
23
"bytes"
24
+ "fmt"
24
25
"os"
25
26
"path/filepath"
26
27
"strings"
@@ -201,21 +202,44 @@ func run(cmd *cobra.Command, args []string) {
201
202
}
202
203
defer f .Close ()
203
204
204
- if err := f .FlashFirmware (firmwareFile ); err != nil {
205
+ // now flash the actual firmware
206
+ flasherOut := new (bytes.Buffer )
207
+ flasherErr := new (bytes.Buffer )
208
+ if feedback .GetFormat () == feedback .JSON {
209
+ err = f .FlashFirmware (firmwareFile , flasherOut )
210
+ } else {
211
+ err = f .FlashFirmware (firmwareFile , os .Stdout )
212
+ }
213
+ if err != nil {
205
214
feedback .Errorf ("Error during firmware flashing: %s" , err )
206
- os . Exit ( errorcodes . ErrGeneric )
215
+ flasherErr . Write ([] byte ( fmt . Sprintf ( "Error during firmware flashing: %s" , err )) )
207
216
}
208
217
209
218
// Print the results
210
219
feedback .PrintResult (& flashResult {
211
- ProgrammerOut : programmerOut .String (),
212
- ProgrammerErr : programmerErr .String (),
220
+ Programmer : (& ExecOutput {
221
+ Stdout : programmerOut .String (),
222
+ Stderr : programmerErr .String (),
223
+ }),
224
+ Flasher : (& ExecOutput {
225
+ Stdout : flasherOut .String (),
226
+ Stderr : flasherErr .String (),
227
+ }),
213
228
})
229
+ // Exit if something went wrong but after printing
230
+ if err != nil {
231
+ os .Exit (errorcodes .ErrGeneric )
232
+ }
214
233
}
215
234
216
235
type flashResult struct {
217
- ProgrammerOut string
218
- ProgrammerErr string
236
+ Programmer * ExecOutput `json:"programmer"`
237
+ Flasher * ExecOutput `json:"flasher"`
238
+ }
239
+
240
+ type ExecOutput struct {
241
+ Stdout string `json:"stdout"`
242
+ Stderr string `json:"stderr"`
219
243
}
220
244
221
245
func (r * flashResult ) Data () interface {} {
0 commit comments