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}

`