@@ -138,7 +138,7 @@ func installTool(pm *packagemanager.PackageManager, tool *cores.ToolRelease, dow
138
138
return fmt .Errorf (tr ("downloading %[1]s tool: %[2]s" ), tool , err )
139
139
}
140
140
taskCB (& rpc.TaskProgress {Completed : true })
141
- if err := pme .InstallTool (tool , taskCB ); err != nil {
141
+ if err := pme .InstallTool (tool , taskCB , true ); err != nil {
142
142
return fmt .Errorf (tr ("installing %[1]s tool: %[2]s" ), tool , err )
143
143
}
144
144
return nil
@@ -307,23 +307,35 @@ func Init(req *rpc.InitRequest, responseCallback func(r *rpc.InitResponse)) erro
307
307
for _ , u := range urls {
308
308
URL , err := utils .URLParse (u )
309
309
if err != nil {
310
- s := status .Newf (codes .InvalidArgument , tr ("Invalid additional URL: %v" ), err )
311
- responseError (s )
310
+ e := & arduino.InitFailedError {
311
+ Code : codes .InvalidArgument ,
312
+ Cause : fmt .Errorf (tr ("Invalid additional URL: %v" , err )),
313
+ Reason : rpc .FailedInstanceInitReason_FAILED_INSTANCE_INIT_REASON_INVALID_INDEX_URL ,
314
+ }
315
+ responseError (e .ToRPCStatus ())
312
316
continue
313
317
}
314
318
315
319
if URL .Scheme == "file" {
316
320
_ , err := pmb .LoadPackageIndexFromFile (paths .New (URL .Path ))
317
321
if err != nil {
318
- s := status .Newf (codes .FailedPrecondition , tr ("Loading index file: %v" ), err )
319
- responseError (s )
322
+ e := & arduino.InitFailedError {
323
+ Code : codes .FailedPrecondition ,
324
+ Cause : fmt .Errorf (tr ("Loading index file: %v" , err )),
325
+ Reason : rpc .FailedInstanceInitReason_FAILED_INSTANCE_INIT_REASON_INDEX_LOAD_ERROR ,
326
+ }
327
+ responseError (e .ToRPCStatus ())
320
328
}
321
329
continue
322
330
}
323
331
324
332
if err := pmb .LoadPackageIndex (URL ); err != nil {
325
- s := status .Newf (codes .FailedPrecondition , tr ("Loading index file: %v" ), err )
326
- responseError (s )
333
+ e := & arduino.InitFailedError {
334
+ Code : codes .FailedPrecondition ,
335
+ Cause : fmt .Errorf (tr ("Loading index file: %v" , err )),
336
+ Reason : rpc .FailedInstanceInitReason_FAILED_INSTANCE_INIT_REASON_INDEX_LOAD_ERROR ,
337
+ }
338
+ responseError (e .ToRPCStatus ())
327
339
}
328
340
}
329
341
@@ -335,8 +347,12 @@ func Init(req *rpc.InitRequest, responseCallback func(r *rpc.InitResponse)) erro
335
347
for name , tool := range pmb .GetOrCreatePackage ("builtin" ).Tools {
336
348
latest := tool .LatestRelease ()
337
349
if latest == nil {
338
- s := status .Newf (codes .Internal , tr ("can't find latest release of tool %s" , name ))
339
- responseError (s )
350
+ e := & arduino.InitFailedError {
351
+ Code : codes .Internal ,
352
+ Cause : fmt .Errorf (tr ("can't find latest release of tool %s" , name )),
353
+ Reason : rpc .FailedInstanceInitReason_FAILED_INSTANCE_INIT_REASON_TOOL_LOAD_ERROR ,
354
+ }
355
+ responseError (e .ToRPCStatus ())
340
356
} else if ! latest .IsInstalled () {
341
357
builtinToolsToInstall = append (builtinToolsToInstall , latest )
342
358
}
@@ -346,8 +362,12 @@ func Init(req *rpc.InitRequest, responseCallback func(r *rpc.InitResponse)) erro
346
362
if len (builtinToolsToInstall ) > 0 {
347
363
for _ , toolRelease := range builtinToolsToInstall {
348
364
if err := installTool (pmb .Build (), toolRelease , downloadCallback , taskCallback ); err != nil {
349
- s := status .Newf (codes .Internal , err .Error ())
350
- responseError (s )
365
+ e := & arduino.InitFailedError {
366
+ Code : codes .Internal ,
367
+ Cause : err ,
368
+ Reason : rpc .FailedInstanceInitReason_FAILED_INSTANCE_INIT_REASON_TOOL_LOAD_ERROR ,
369
+ }
370
+ responseError (e .ToRPCStatus ())
351
371
}
352
372
}
353
373
0 commit comments