Skip to content

Commit 50a2387

Browse files
committed
Avoid double buffering of command output in getFirmwareVersion
1 parent 890eae4 commit 50a2387

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

cli/firmware/getversion.go

+5-9
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
package firmware
2020

2121
import (
22-
"bytes"
2322
"fmt"
2423
"io"
2524
"log"
@@ -85,13 +84,10 @@ func runGetVersion(cmd *cobra.Command, args []string) {
8584
}
8685

8786
func getVersionWithPlugin(uploader *plugin.FwUploader) *flasher.FlashResult {
88-
stdoutBuffer := &bytes.Buffer{}
89-
stderrBuffer := &bytes.Buffer{}
90-
stdout := io.Writer(os.Stdout)
91-
stderr := io.Writer(os.Stderr)
87+
var stdout, stderr io.Writer
9288
if feedback.GetFormat() == feedback.Text {
93-
stdout = io.MultiWriter(stdoutBuffer, os.Stdout)
94-
stderr = io.MultiWriter(stderrBuffer, os.Stderr)
89+
stdout = os.Stdout
90+
stderr = os.Stderr
9591
}
9692
res, err := uploader.GetFirmwareVersion(commonFlags.Address, stdout, stderr)
9793
if err != nil {
@@ -100,8 +96,8 @@ func getVersionWithPlugin(uploader *plugin.FwUploader) *flasher.FlashResult {
10096

10197
return &flasher.FlashResult{
10298
Programmer: (&flasher.ExecOutput{
103-
Stdout: stdoutBuffer.String(),
104-
Stderr: stderrBuffer.String(),
99+
Stdout: string(res.Stdout),
100+
Stderr: string(res.Stderr),
105101
}),
106102
Version: res.FirmwareVersion.String(),
107103
}

plugin/plugin.go

+7-2
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,12 @@ func (uploader *FwUploader) GetFirmwareVersion(portAddress string, stdout, stder
8989
if portAddress != "" {
9090
args = append(args, "-p", portAddress)
9191
}
92-
execStdout, _, execErr := uploader.exec(stdout, stderr, args...)
92+
execStdout, execStderr, execErr := uploader.exec(stdout, stderr, args...)
9393

94-
res := &GetFirmwareVersionResult{}
94+
res := &GetFirmwareVersionResult{
95+
Stdout: execStdout.Bytes(),
96+
Stderr: execStderr.Bytes(),
97+
}
9598
fwVersionPrefix := "FIRMWARE-VERSION: "
9699
fwErrorPrefix := "GET-VERSION-ERROR: "
97100
for _, line := range strings.Split(execStdout.String(), "\n") {
@@ -118,6 +121,8 @@ func (uploader *FwUploader) GetFirmwareVersion(portAddress string, stdout, stder
118121
type GetFirmwareVersionResult struct {
119122
FirmwareVersion *semver.RelaxedVersion
120123
Error string
124+
Stdout []byte
125+
Stderr []byte
121126
}
122127

123128
// FlashFirmware runs the plugin to flash the selected firmware

0 commit comments

Comments
 (0)