@@ -17,7 +17,6 @@ package board
1717
1818import (
1919 "context"
20- "errors"
2120 "fmt"
2221 "net/url"
2322 "strings"
@@ -31,23 +30,26 @@ import (
3130 rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
3231 discovery "github.com/arduino/board-discovery"
3332 "github.com/arduino/go-paths-helper"
33+ "google.golang.org/grpc/codes"
34+ "google.golang.org/grpc/status"
3435)
3536
3637var tr = i18n .Tr
3738
3839// Attach FIXMEDOC
39- func Attach (ctx context.Context , req * rpc.BoardAttachRequest , taskCB commands.TaskProgressCB ) (* rpc.BoardAttachResponse , error ) {
40+ func Attach (ctx context.Context , req * rpc.BoardAttachRequest , taskCB commands.TaskProgressCB ) (* rpc.BoardAttachResponse , * status. Status ) {
4041 pm := commands .GetPackageManager (req .GetInstance ().GetId ())
4142 if pm == nil {
42- return nil , errors .New (tr ("invalid instance" ))
43+
44+ return nil , status .New (codes .InvalidArgument , tr ("Invalid instance" ))
4345 }
4446 var sketchPath * paths.Path
4547 if req .GetSketchPath () != "" {
4648 sketchPath = paths .New (req .GetSketchPath ())
4749 }
4850 sk , err := sketch .New (sketchPath )
4951 if err != nil {
50- return nil , fmt . Errorf ( tr ("opening sketch: %s" ), err )
52+ return nil , status . Newf ( codes . FailedPrecondition , tr ("Error opening sketch: %s" ), err )
5153 }
5254
5355 boardURI := req .GetBoardUri ()
@@ -63,7 +65,7 @@ func Attach(ctx context.Context, req *rpc.BoardAttachRequest, taskCB commands.Ta
6365 } else {
6466 deviceURI , err := url .Parse (boardURI )
6567 if err != nil {
66- return nil , fmt . Errorf ( tr ("invalid Device URL format: %s" ), err )
68+ return nil , status . Newf ( codes . InvalidArgument , tr ("Invalid Device URL format: %s" ), err )
6769 }
6870
6971 var findBoardFunc func (* packagemanager.PackageManager , * discovery.Monitor , * url.URL ) * cores.Board
@@ -73,7 +75,7 @@ func Attach(ctx context.Context, req *rpc.BoardAttachRequest, taskCB commands.Ta
7375 case "http" , "https" , "tcp" , "udp" :
7476 findBoardFunc = findNetworkConnectedBoard
7577 default :
76- return nil , fmt . Errorf ( tr ("invalid device port type provided" ))
78+ return nil , status . New ( codes . InvalidArgument , tr ("Invalid device port type provided" ))
7779 }
7880
7981 duration , err := time .ParseDuration (req .GetSearchTimeout ())
@@ -89,7 +91,7 @@ func Attach(ctx context.Context, req *rpc.BoardAttachRequest, taskCB commands.Ta
8991 // TODO: Handle the case when no board is found.
9092 board := findBoardFunc (pm , monitor , deviceURI )
9193 if board == nil {
92- return nil , fmt . Errorf ( tr ("no supported board found at %s" ), deviceURI .String ())
94+ return nil , status . Newf ( codes . NotFound , tr ("No supported board found at %s" ), deviceURI .String ())
9395 }
9496 taskCB (& rpc.TaskProgress {Name : fmt .Sprintf (tr ("Board found: %s" ), board .Name ())})
9597
@@ -104,7 +106,7 @@ func Attach(ctx context.Context, req *rpc.BoardAttachRequest, taskCB commands.Ta
104106
105107 err = sk .ExportMetadata ()
106108 if err != nil {
107- return nil , fmt . Errorf ( tr ("cannot export sketch metadata: %s" ), err )
109+ return nil , status . Newf ( codes . PermissionDenied , tr ("Cannot export sketch metadata: %s" ), err )
108110 }
109111 taskCB (& rpc.TaskProgress {Name : fmt .Sprintf (tr ("Selected fqbn: %s" ), sk .Metadata .CPU .Fqbn ), Completed : true })
110112 return & rpc.BoardAttachResponse {}, nil
0 commit comments