From 8656d6be55dd46ea9d2e68adfe32553a18306950 Mon Sep 17 00:00:00 2001 From: Silvano Cerza Date: Wed, 16 Feb 2022 17:58:36 +0100 Subject: [PATCH] board list now returns partial results in case of errors --- cli/board/list.go | 1 - commands/board/list.go | 11 ++++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cli/board/list.go b/cli/board/list.go index a08a7cf4a0c..ffca845e997 100644 --- a/cli/board/list.go +++ b/cli/board/list.go @@ -70,7 +70,6 @@ func runListCommand(cmd *cobra.Command, args []string) { }) if err != nil { feedback.Errorf(tr("Error detecting boards: %v"), err) - os.Exit(errorcodes.ErrNetwork) } feedback.PrintResult(result{ports}) } diff --git a/commands/board/list.go b/commands/board/list.go index fcfec9296b2..b711211323b 100644 --- a/commands/board/list.go +++ b/commands/board/list.go @@ -174,7 +174,9 @@ func identify(pm *packagemanager.PackageManager, port *discovery.Port) ([]*rpc.B return boards, nil } -// List FIXMEDOC +// List returns a list of boards found by the loaded discoveries. +// In case of errors partial results from discoveries that didn't fail +// are returned. func List(req *rpc.BoardListRequest) (r []*rpc.DetectedPort, e error) { tags := map[string]string{} // Use defer func() to evaluate tags map when function returns @@ -208,9 +210,6 @@ func List(req *rpc.BoardListRequest) (r []*rpc.DetectedPort, e error) { retVal := []*rpc.DetectedPort{} ports, errs := pm.DiscoveryManager().List() - if len(errs) > 0 { - return nil, &arduino.UnavailableError{Message: tr("Error getting board list"), Cause: fmt.Errorf("%v", errs)} - } for _, port := range ports { boards, err := identify(pm, port) if err != nil { @@ -225,7 +224,9 @@ func List(req *rpc.BoardListRequest) (r []*rpc.DetectedPort, e error) { } retVal = append(retVal, b) } - + if len(errs) > 0 { + return retVal, &arduino.UnavailableError{Message: tr("Error getting board list"), Cause: fmt.Errorf("%v", errs)} + } return retVal, nil }