Skip to content

Commit e270afd

Browse files
committed
Allow default monitor settings if board can't be detected
1 parent 7d00b5b commit e270afd

File tree

3 files changed

+10
-11
lines changed

3 files changed

+10
-11
lines changed

internal/cli/arguments/fqbn.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ func CalculateFQBNAndPort(ctx context.Context, portArgs *Port, fqbnArg *Fqbn, in
8080
if portArgs == nil || portArgs.address == "" {
8181
feedback.FatalError(&cmderrors.MissingFQBNError{}, feedback.ErrGeneric)
8282
}
83-
fqbn, port := portArgs.DetectFQBN(ctx, instance, srv)
84-
if fqbn == "" {
83+
fqbn, port, err := portArgs.DetectFQBN(ctx, instance, srv)
84+
if err != nil {
8585
feedback.FatalError(&cmderrors.MissingFQBNError{}, feedback.ErrGeneric)
8686
}
8787
return fqbn, port

internal/cli/arguments/port.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ package arguments
1818
import (
1919
"context"
2020
"errors"
21+
"fmt"
2122
"time"
2223

2324
"github.com/arduino/arduino-cli/commands"
2425
"github.com/arduino/arduino-cli/commands/cmderrors"
2526
f "github.com/arduino/arduino-cli/internal/algorithms"
26-
"github.com/arduino/arduino-cli/internal/cli/feedback"
2727
"github.com/arduino/arduino-cli/internal/i18n"
2828
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
2929
"github.com/sirupsen/logrus"
@@ -132,13 +132,13 @@ func (p *Port) GetSearchTimeout() time.Duration {
132132
// DetectFQBN tries to identify the board connected to the port and returns the
133133
// discovered Port object together with the FQBN. If the port does not match
134134
// exactly 1 board,
135-
func (p *Port) DetectFQBN(ctx context.Context, inst *rpc.Instance, srv rpc.ArduinoCoreServiceServer) (string, *rpc.Port) {
135+
func (p *Port) DetectFQBN(ctx context.Context, inst *rpc.Instance, srv rpc.ArduinoCoreServiceServer) (string, *rpc.Port, error) {
136136
detectedPorts, err := srv.BoardList(ctx, &rpc.BoardListRequest{
137137
Instance: inst,
138138
Timeout: p.timeout.Get().Milliseconds(),
139139
})
140140
if err != nil {
141-
feedback.Fatal(i18n.Tr("Error during FQBN detection: %v", err), feedback.ErrGeneric)
141+
return "", nil, fmt.Errorf("%s: %w", i18n.Tr("Error during board detection"), err)
142142
}
143143
for _, detectedPort := range detectedPorts.GetPorts() {
144144
port := detectedPort.GetPort()
@@ -149,14 +149,14 @@ func (p *Port) DetectFQBN(ctx context.Context, inst *rpc.Instance, srv rpc.Ardui
149149
continue
150150
}
151151
if len(detectedPort.GetMatchingBoards()) > 1 {
152-
feedback.FatalError(&cmderrors.MultipleBoardsDetectedError{Port: port}, feedback.ErrBadArgument)
152+
return "", nil, &cmderrors.MultipleBoardsDetectedError{Port: port}
153153
}
154154
if len(detectedPort.GetMatchingBoards()) == 0 {
155-
feedback.FatalError(&cmderrors.NoBoardsDetectedError{Port: port}, feedback.ErrBadArgument)
155+
return "", nil, &cmderrors.NoBoardsDetectedError{Port: port}
156156
}
157-
return detectedPort.GetMatchingBoards()[0].GetFqbn(), port
157+
return detectedPort.GetMatchingBoards()[0].GetFqbn(), port, nil
158158
}
159-
return "", nil
159+
return "", nil, &cmderrors.NoBoardsDetectedError{Port: &rpc.Port{Address: p.address, Protocol: p.protocol}}
160160
}
161161

162162
// IsPortFlagSet returns true if the port address is provided

internal/cli/monitor/monitor.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import (
1919
"bytes"
2020
"context"
2121
"errors"
22-
"fmt"
2322
"io"
2423
"os"
2524
"sort"
@@ -136,7 +135,7 @@ func runMonitorCmd(
136135
case sketch.GetDefaultFqbn() != "":
137136
fqbn = sketch.GetDefaultFqbn()
138137
default:
139-
fqbn, _ = portArgs.DetectFQBN(ctx, inst, srv)
138+
fqbn, _, _ = portArgs.DetectFQBN(ctx, inst, srv)
140139
}
141140

142141
portAddress, portProtocol, err := portArgs.GetPortAddressAndProtocol(ctx, inst, srv, defaultPort, defaultProtocol)

0 commit comments

Comments
 (0)