@@ -303,23 +303,35 @@ func Init(req *rpc.InitRequest, responseCallback func(r *rpc.InitResponse)) erro
303303 for _ , u := range urls {
304304 URL , err := utils .URLParse (u )
305305 if err != nil {
306- s := status .Newf (codes .InvalidArgument , tr ("Invalid additional URL: %v" ), err )
307- responseError (s )
306+ e := & arduino.InitFailedError {
307+ Code : codes .InvalidArgument ,
308+ Cause : fmt .Errorf (tr ("Invalid additional URL: %v" , err )),
309+ Reason : arduino .InvalidIndexURL ,
310+ }
311+ responseError (e .ToRPCStatus ())
308312 continue
309313 }
310314
311315 if URL .Scheme == "file" {
312316 _ , err := pmb .LoadPackageIndexFromFile (paths .New (URL .Path ))
313317 if err != nil {
314- s := status .Newf (codes .FailedPrecondition , tr ("Loading index file: %v" ), err )
315- responseError (s )
318+ e := & arduino.InitFailedError {
319+ Code : codes .FailedPrecondition ,
320+ Cause : fmt .Errorf (tr ("Loading index file: %v" , err )),
321+ Reason : arduino .ErrorIndexLoad ,
322+ }
323+ responseError (e .ToRPCStatus ())
316324 }
317325 continue
318326 }
319327
320328 if err := pmb .LoadPackageIndex (URL ); err != nil {
321- s := status .Newf (codes .FailedPrecondition , tr ("Loading index file: %v" ), err )
322- responseError (s )
329+ e := & arduino.InitFailedError {
330+ Code : codes .FailedPrecondition ,
331+ Cause : fmt .Errorf (tr ("Loading index file: %v" , err )),
332+ Reason : arduino .ErrorIndexLoad ,
333+ }
334+ responseError (e .ToRPCStatus ())
323335 }
324336 }
325337
@@ -331,8 +343,12 @@ func Init(req *rpc.InitRequest, responseCallback func(r *rpc.InitResponse)) erro
331343 for name , tool := range pmb .GetOrCreatePackage ("builtin" ).Tools {
332344 latest := tool .LatestRelease ()
333345 if latest == nil {
334- s := status .Newf (codes .Internal , tr ("can't find latest release of tool %s" , name ))
335- responseError (s )
346+ e := & arduino.InitFailedError {
347+ Code : codes .Internal ,
348+ Cause : fmt .Errorf (tr ("can't find latest release of tool %s" , name )),
349+ Reason : arduino .ErrorToolLoad ,
350+ }
351+ responseError (e .ToRPCStatus ())
336352 } else if ! latest .IsInstalled () {
337353 builtinToolsToInstall = append (builtinToolsToInstall , latest )
338354 }
@@ -342,8 +358,12 @@ func Init(req *rpc.InitRequest, responseCallback func(r *rpc.InitResponse)) erro
342358 if len (builtinToolsToInstall ) > 0 {
343359 for _ , toolRelease := range builtinToolsToInstall {
344360 if err := installTool (pmb .Build (), toolRelease , downloadCallback , taskCallback ); err != nil {
345- s := status .Newf (codes .Internal , err .Error ())
346- responseError (s )
361+ e := & arduino.InitFailedError {
362+ Code : codes .Internal ,
363+ Cause : err ,
364+ Reason : arduino .ErrorToolLoad ,
365+ }
366+ responseError (e .ToRPCStatus ())
347367 }
348368 }
349369
0 commit comments