Skip to content

Commit 9c4d29f

Browse files
committed
Fixed Explorer.IsManagedPlatformRelease
It has been replaced by a much simpler check on the version field.
1 parent 5613027 commit 9c4d29f

File tree

3 files changed

+13
-34
lines changed

3 files changed

+13
-34
lines changed

internal/arduino/cores/cores.go

+5
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,11 @@ func (t *TimestampsStore) Dirty() bool {
117117
return false
118118
}
119119

120+
// IsManaged returns true if the platform release is managed by the package manager.
121+
func (release *PlatformRelease) IsManaged() bool {
122+
return release.Version.String() == ""
123+
}
124+
120125
// Dirty returns true if one of the files of this PlatformRelease has been changed
121126
// (it means that the PlatformRelease should be rebuilt to be used correctly).
122127
func (release *PlatformRelease) Dirty() bool {

internal/arduino/cores/packagemanager/install_uninstall.go

+1-18
Original file line numberDiff line numberDiff line change
@@ -259,23 +259,6 @@ func (pme *Explorer) RunPreOrPostScript(installDir *paths.Path, prefix string) (
259259
return []byte{}, []byte{}, nil
260260
}
261261

262-
// IsManagedPlatformRelease returns true if the PlatforRelease is managed by the PackageManager
263-
func (pme *Explorer) IsManagedPlatformRelease(platformRelease *cores.PlatformRelease) bool {
264-
if pme.PackagesDir == nil {
265-
return false
266-
}
267-
installDir := platformRelease.InstallDir.Clone()
268-
if installDir.FollowSymLink() != nil {
269-
return false
270-
}
271-
packagesDir := pme.PackagesDir.Clone()
272-
if packagesDir.FollowSymLink() != nil {
273-
return false
274-
}
275-
managed, _ := installDir.IsInsideDir(packagesDir)
276-
return managed
277-
}
278-
279262
// UninstallPlatform remove a PlatformRelease.
280263
func (pme *Explorer) UninstallPlatform(platformRelease *cores.PlatformRelease, taskCB rpc.TaskProgressCB, skipPreUninstall bool) error {
281264
log := pme.log.WithField("platform", platformRelease)
@@ -290,7 +273,7 @@ func (pme *Explorer) UninstallPlatform(platformRelease *cores.PlatformRelease, t
290273
}
291274

292275
// Safety measure
293-
if !pme.IsManagedPlatformRelease(platformRelease) {
276+
if !platformRelease.IsManaged() {
294277
err := errors.New(i18n.Tr("%s is not managed by package manager", platformRelease))
295278
log.WithError(err).Error("Error uninstalling")
296279
return &cmderrors.FailedUninstallError{Message: err.Error()}

internal/arduino/cores/packagemanager/package_manager.go

+7-16
Original file line numberDiff line numberDiff line change
@@ -608,7 +608,7 @@ func (tr *ToolReleaseActions) Get() (*cores.ToolRelease, error) {
608608
// or nil if the PlatformRelease is not installed. Platforms installed manually are ignored.
609609
func (pme *Explorer) GetInstalledPlatformRelease(platform *cores.Platform) *cores.PlatformRelease {
610610
for _, release := range platform.GetAllInstalled() {
611-
if release.IsInstalled() && pme.IsManagedPlatformRelease(release) {
611+
if release.IsInstalled() && release.IsManaged() {
612612
return release
613613
}
614614
}
@@ -625,33 +625,24 @@ func (pme *Explorer) GetBestInstalledPlatformRelease(platform *cores.Platform) *
625625

626626
debug := func(msg string, pl *cores.PlatformRelease) {
627627
pme.log.WithField("version", pl.Version).
628-
WithField("managed", pme.IsManagedPlatformRelease(pl)).
628+
WithField("managed", pl.IsManaged()).
629629
Debugf("%s: %s", msg, pl)
630630
}
631631

632632
best := releases[0]
633-
bestIsManaged := pme.IsManagedPlatformRelease(best)
634-
debug("current best", best)
635-
636633
for _, candidate := range releases[1:] {
637-
candidateIsManaged := pme.IsManagedPlatformRelease(candidate)
634+
debug("current best", best)
638635
debug("candidate", candidate)
639-
if !candidateIsManaged && !bestIsManaged {
640-
if candidate.Version.GreaterThan(best.Version) {
641-
best = candidate
642-
}
636+
if !candidate.IsManaged() && best.IsManaged() {
643637
continue
644638
}
645-
if !candidateIsManaged {
639+
if candidate.IsManaged() && !best.IsManaged() {
640+
best = candidate
646641
continue
647642
}
648-
if !bestIsManaged {
649-
best = candidate
650-
bestIsManaged = true
651-
} else if candidate.Version.GreaterThan(best.Version) {
643+
if candidate.Version.GreaterThan(best.Version) {
652644
best = candidate
653645
}
654-
debug("current best", best)
655646
}
656647
return best
657648
}

0 commit comments

Comments
 (0)