@@ -303,23 +303,35 @@ func Init(req *rpc.InitRequest, responseCallback func(r *rpc.InitResponse)) erro
303
303
for _ , u := range urls {
304
304
URL , err := utils .URLParse (u )
305
305
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 : rpc .FailedInstanceInitReason_FAILED_INSTANCE_INIT_REASON_INVALID_INDEX_URL ,
310
+ }
311
+ responseError (e .ToRPCStatus ())
308
312
continue
309
313
}
310
314
311
315
if URL .Scheme == "file" {
312
316
_ , err := pmb .LoadPackageIndexFromFile (paths .New (URL .Path ))
313
317
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 : rpc .FailedInstanceInitReason_FAILED_INSTANCE_INIT_REASON_INDEX_LOAD_ERROR ,
322
+ }
323
+ responseError (e .ToRPCStatus ())
316
324
}
317
325
continue
318
326
}
319
327
320
328
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 : rpc .FailedInstanceInitReason_FAILED_INSTANCE_INIT_REASON_INDEX_LOAD_ERROR ,
333
+ }
334
+ responseError (e .ToRPCStatus ())
323
335
}
324
336
}
325
337
@@ -331,8 +343,12 @@ func Init(req *rpc.InitRequest, responseCallback func(r *rpc.InitResponse)) erro
331
343
for name , tool := range pmb .GetOrCreatePackage ("builtin" ).Tools {
332
344
latest := tool .LatestRelease ()
333
345
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 : rpc .FailedInstanceInitReason_FAILED_INSTANCE_INIT_REASON_TOOL_LOAD_ERROR ,
350
+ }
351
+ responseError (e .ToRPCStatus ())
336
352
} else if ! latest .IsInstalled () {
337
353
builtinToolsToInstall = append (builtinToolsToInstall , latest )
338
354
}
@@ -342,8 +358,12 @@ func Init(req *rpc.InitRequest, responseCallback func(r *rpc.InitResponse)) erro
342
358
if len (builtinToolsToInstall ) > 0 {
343
359
for _ , toolRelease := range builtinToolsToInstall {
344
360
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 : rpc .FailedInstanceInitReason_FAILED_INSTANCE_INIT_REASON_TOOL_LOAD_ERROR ,
365
+ }
366
+ responseError (e .ToRPCStatus ())
347
367
}
348
368
}
349
369
0 commit comments