@@ -25,6 +25,7 @@ import (
2525 "github.com/arduino/arduino-cli/commands/cmderrors"
2626 "github.com/arduino/arduino-cli/internal/arduino/cores"
2727 "github.com/arduino/arduino-cli/internal/arduino/cores/packageindex"
28+ "github.com/arduino/arduino-cli/internal/arduino/resources"
2829 "github.com/arduino/arduino-cli/internal/i18n"
2930 rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
3031 "github.com/arduino/go-paths-helper"
@@ -40,6 +41,7 @@ func (pme *Explorer) DownloadAndInstallPlatformUpgrades(
4041 taskCB rpc.TaskProgressCB ,
4142 skipPostInstall bool ,
4243 skipPreUninstall bool ,
44+ checks resources.IntegrityCheckMode ,
4345) (* cores.PlatformRelease , error ) {
4446 if platformRef .PlatformVersion != nil {
4547 return nil , & cmderrors.InvalidArgumentError {Message : i18n .Tr ("Upgrade doesn't accept parameters with version" )}
@@ -64,7 +66,7 @@ func (pme *Explorer) DownloadAndInstallPlatformUpgrades(
6466 if err != nil {
6567 return nil , & cmderrors.PlatformNotFoundError {Platform : platformRef .String ()}
6668 }
67- if err := pme .DownloadAndInstallPlatformAndTools (ctx , platformRelease , tools , downloadCB , taskCB , skipPostInstall , skipPreUninstall ); err != nil {
69+ if err := pme .DownloadAndInstallPlatformAndTools (ctx , platformRelease , tools , downloadCB , taskCB , skipPostInstall , skipPreUninstall , checks ); err != nil {
6870 return nil , err
6971 }
7072
@@ -78,7 +80,7 @@ func (pme *Explorer) DownloadAndInstallPlatformAndTools(
7880 ctx context.Context ,
7981 platformRelease * cores.PlatformRelease , requiredTools []* cores.ToolRelease ,
8082 downloadCB rpc.DownloadProgressCB , taskCB rpc.TaskProgressCB ,
81- skipPostInstall bool , skipPreUninstall bool ) error {
83+ skipPostInstall bool , skipPreUninstall bool , checks resources. IntegrityCheckMode ) error {
8284 log := pme .log .WithField ("platform" , platformRelease )
8385
8486 // Prerequisite checks before install
@@ -106,7 +108,7 @@ func (pme *Explorer) DownloadAndInstallPlatformAndTools(
106108
107109 // Install tools first
108110 for _ , tool := range toolsToInstall {
109- if err := pme .InstallTool (tool , taskCB , skipPostInstall ); err != nil {
111+ if err := pme .InstallTool (tool , taskCB , skipPostInstall , checks ); err != nil {
110112 return err
111113 }
112114 }
@@ -138,7 +140,7 @@ func (pme *Explorer) DownloadAndInstallPlatformAndTools(
138140 }
139141
140142 // Install
141- if err := pme .InstallPlatform (platformRelease ); err != nil {
143+ if err := pme .InstallPlatform (platformRelease , checks ); err != nil {
142144 log .WithError (err ).Error ("Cannot install platform" )
143145 return & cmderrors.FailedInstallError {Message : i18n .Tr ("Cannot install platform" ), Cause : err }
144146 }
@@ -196,18 +198,18 @@ func (pme *Explorer) DownloadAndInstallPlatformAndTools(
196198}
197199
198200// InstallPlatform installs a specific release of a platform.
199- func (pme * Explorer ) InstallPlatform (platformRelease * cores.PlatformRelease ) error {
201+ func (pme * Explorer ) InstallPlatform (platformRelease * cores.PlatformRelease , checks resources. IntegrityCheckMode ) error {
200202 destDir := pme .PackagesDir .Join (
201203 platformRelease .Platform .Package .Name ,
202204 "hardware" ,
203205 platformRelease .Platform .Architecture ,
204206 platformRelease .Version .String ())
205- return pme .InstallPlatformInDirectory (platformRelease , destDir )
207+ return pme .InstallPlatformInDirectory (platformRelease , destDir , checks )
206208}
207209
208210// InstallPlatformInDirectory installs a specific release of a platform in a specific directory.
209- func (pme * Explorer ) InstallPlatformInDirectory (platformRelease * cores.PlatformRelease , destDir * paths.Path ) error {
210- if err := platformRelease .Resource .Install (pme .DownloadDir , pme .tempDir , destDir ); err != nil {
211+ func (pme * Explorer ) InstallPlatformInDirectory (platformRelease * cores.PlatformRelease , destDir * paths.Path , checks resources. IntegrityCheckMode ) error {
212+ if err := platformRelease .Resource .Install (pme .DownloadDir , pme .tempDir , destDir , checks ); err != nil {
211213 return errors .New (i18n .Tr ("installing platform %[1]s: %[2]s" , platformRelease , err ))
212214 }
213215 if d , err := destDir .Abs (); err == nil {
@@ -320,7 +322,7 @@ func (pme *Explorer) UninstallPlatform(platformRelease *cores.PlatformRelease, t
320322}
321323
322324// InstallTool installs a specific release of a tool.
323- func (pme * Explorer ) InstallTool (toolRelease * cores.ToolRelease , taskCB rpc.TaskProgressCB , skipPostInstall bool ) error {
325+ func (pme * Explorer ) InstallTool (toolRelease * cores.ToolRelease , taskCB rpc.TaskProgressCB , skipPostInstall bool , checks resources. IntegrityCheckMode ) error {
324326 log := pme .log .WithField ("Tool" , toolRelease )
325327
326328 if toolRelease .IsInstalled () {
@@ -343,7 +345,7 @@ func (pme *Explorer) InstallTool(toolRelease *cores.ToolRelease, taskCB rpc.Task
343345 "tools" ,
344346 toolRelease .Tool .Name ,
345347 toolRelease .Version .String ())
346- err := toolResource .Install (pme .DownloadDir , pme .tempDir , destDir )
348+ err := toolResource .Install (pme .DownloadDir , pme .tempDir , destDir , checks )
347349 if err != nil {
348350 log .WithError (err ).Warn ("Cannot install tool" )
349351 return & cmderrors.FailedInstallError {Message : i18n .Tr ("Cannot install tool %s" , toolRelease ), Cause : err }
0 commit comments