@@ -181,6 +181,8 @@ func Init(req *rpc.InitRequest, responseCallback func(r *rpc.InitResponse)) *sta
181181 // If this is not done the information of the uninstall core is kept in memory,
182182 // even if it should not.
183183 instance .PackageManager .Clear ()
184+ ctagsTool := getBuiltinCtagsTool (instance .PackageManager )
185+ serialDiscoveryTool := getBuiltinSerialDiscoveryTool (instance .PackageManager )
184186
185187 // Load Platforms
186188 urls := []string {globals .DefaultIndexURL }
@@ -254,48 +256,27 @@ func Init(req *rpc.InitRequest, responseCallback func(r *rpc.InitResponse)) *sta
254256 }
255257
256258 // Install tools if necessary
257- toolHasBeenInstalled := false
258- ctagsTool , err := getBuiltinCtagsTool (instance .PackageManager )
259+ ctagsHasBeenInstalled , err := instance .installToolIfMissing (ctagsTool , downloadCallback , taskCallback )
259260 if err != nil {
260261 s := status .Newf (codes .Internal , err .Error ())
261262 responseCallback (& rpc.InitResponse {
262263 Message : & rpc.InitResponse_Error {
263264 Error : s .Proto (),
264265 },
265266 })
266- } else {
267- toolHasBeenInstalled , err = instance .installToolIfMissing (ctagsTool , downloadCallback , taskCallback )
268- if err != nil {
269- s := status .Newf (codes .Internal , err .Error ())
270- responseCallback (& rpc.InitResponse {
271- Message : & rpc.InitResponse_Error {
272- Error : s .Proto (),
273- },
274- })
275- }
276267 }
277268
278- serialDiscoveryTool , _ := getBuiltinSerialDiscoveryTool ( instance .PackageManager )
269+ serialHasBeenInstalled , err := instance .installToolIfMissing ( serialDiscoveryTool , downloadCallback , taskCallback )
279270 if err != nil {
280271 s := status .Newf (codes .Internal , err .Error ())
281272 responseCallback (& rpc.InitResponse {
282273 Message : & rpc.InitResponse_Error {
283274 Error : s .Proto (),
284275 },
285276 })
286- } else {
287- toolHasBeenInstalled , err = instance .installToolIfMissing (serialDiscoveryTool , downloadCallback , taskCallback )
288- if err != nil {
289- s := status .Newf (codes .Internal , err .Error ())
290- responseCallback (& rpc.InitResponse {
291- Message : & rpc.InitResponse_Error {
292- Error : s .Proto (),
293- },
294- })
295- }
296277 }
297278
298- if toolHasBeenInstalled {
279+ if ctagsHasBeenInstalled || serialHasBeenInstalled {
299280 // We installed at least one new tool after loading hardware
300281 // so we must reload again otherwise we would never found them.
301282 for _ , err := range instance .PackageManager .LoadHardware () {
0 commit comments