Added option to disable integrity checks in core install (for devel… · arduino/arduino-cli@c78921a (original) (raw)
`@@ -25,6 +25,7 @@ import (
`
25
25
`"github.com/arduino/arduino-cli/commands/cmderrors"
`
26
26
`"github.com/arduino/arduino-cli/internal/arduino/cores"
`
27
27
`"github.com/arduino/arduino-cli/internal/arduino/cores/packageindex"
`
``
28
`+
"github.com/arduino/arduino-cli/internal/arduino/resources"
`
28
29
`"github.com/arduino/arduino-cli/internal/i18n"
`
29
30
` rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
`
30
31
`"github.com/arduino/go-paths-helper"
`
`@@ -40,6 +41,7 @@ func (pme *Explorer) DownloadAndInstallPlatformUpgrades(
`
40
41
`taskCB rpc.TaskProgressCB,
`
41
42
`skipPostInstall bool,
`
42
43
`skipPreUninstall bool,
`
``
44
`+
checks resources.IntegrityCheckMode,
`
43
45
`) (*cores.PlatformRelease, error) {
`
44
46
`if platformRef.PlatformVersion != nil {
`
45
47
`return nil, &cmderrors.InvalidArgumentError{Message: i18n.Tr("Upgrade doesn't accept parameters with version")}
`
`@@ -64,7 +66,7 @@ func (pme *Explorer) DownloadAndInstallPlatformUpgrades(
`
64
66
`if err != nil {
`
65
67
`return nil, &cmderrors.PlatformNotFoundError{Platform: platformRef.String()}
`
66
68
` }
`
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 {
`
68
70
`return nil, err
`
69
71
` }
`
70
72
``
`@@ -78,7 +80,7 @@ func (pme *Explorer) DownloadAndInstallPlatformAndTools(
`
78
80
`ctx context.Context,
`
79
81
`platformRelease *cores.PlatformRelease, requiredTools []*cores.ToolRelease,
`
80
82
`downloadCB rpc.DownloadProgressCB, taskCB rpc.TaskProgressCB,
`
81
``
`-
skipPostInstall bool, skipPreUninstall bool) error {
`
``
83
`+
skipPostInstall bool, skipPreUninstall bool, checks resources.IntegrityCheckMode) error {
`
82
84
`log := pme.log.WithField("platform", platformRelease)
`
83
85
``
84
86
`// Prerequisite checks before install
`
`@@ -106,7 +108,7 @@ func (pme *Explorer) DownloadAndInstallPlatformAndTools(
`
106
108
``
107
109
`// Install tools first
`
108
110
`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 {
`
110
112
`return err
`
111
113
` }
`
112
114
` }
`
`@@ -138,7 +140,7 @@ func (pme *Explorer) DownloadAndInstallPlatformAndTools(
`
138
140
` }
`
139
141
``
140
142
`// Install
`
141
``
`-
if err := pme.InstallPlatform(platformRelease); err != nil {
`
``
143
`+
if err := pme.InstallPlatform(platformRelease, checks); err != nil {
`
142
144
`log.WithError(err).Error("Cannot install platform")
`
143
145
`return &cmderrors.FailedInstallError{Message: i18n.Tr("Cannot install platform"), Cause: err}
`
144
146
` }
`
`@@ -196,18 +198,18 @@ func (pme *Explorer) DownloadAndInstallPlatformAndTools(
`
196
198
`}
`
197
199
``
198
200
`// 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 {
`
200
202
`destDir := pme.PackagesDir.Join(
`
201
203
`platformRelease.Platform.Package.Name,
`
202
204
`"hardware",
`
203
205
`platformRelease.Platform.Architecture,
`
204
206
`platformRelease.Version.String())
`
205
``
`-
return pme.InstallPlatformInDirectory(platformRelease, destDir)
`
``
207
`+
return pme.InstallPlatformInDirectory(platformRelease, destDir, checks)
`
206
208
`}
`
207
209
``
208
210
`// 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 {
`
211
213
`return errors.New(i18n.Tr("installing platform %[1]s: %[2]s", platformRelease, err))
`
212
214
` }
`
213
215
`if d, err := destDir.Abs(); err == nil {
`
`@@ -320,7 +322,7 @@ func (pme *Explorer) UninstallPlatform(platformRelease *cores.PlatformRelease, t
`
320
322
`}
`
321
323
``
322
324
`// 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 {
`
324
326
`log := pme.log.WithField("Tool", toolRelease)
`
325
327
``
326
328
`if toolRelease.IsInstalled() {
`
`@@ -343,7 +345,7 @@ func (pme *Explorer) InstallTool(toolRelease *cores.ToolRelease, taskCB rpc.Task
`
343
345
`"tools",
`
344
346
`toolRelease.Tool.Name,
`
345
347
`toolRelease.Version.String())
`
346
``
`-
err := toolResource.Install(pme.DownloadDir, pme.tempDir, destDir)
`
``
348
`+
err := toolResource.Install(pme.DownloadDir, pme.tempDir, destDir, checks)
`
347
349
`if err != nil {
`
348
350
`log.WithError(err).Warn("Cannot install tool")
`
349
351
`return &cmderrors.FailedInstallError{Message: i18n.Tr("Cannot install tool %s", toolRelease), Cause: err}
`