Skip to content

Commit dd727cf

Browse files
committed
Fixed Explorer.IsManagedPlatformRelease
It has been replaced by a much simpler check on the version field.
1 parent 39383d4 commit dd727cf

File tree

3 files changed

+13
-34
lines changed

3 files changed

+13
-34
lines changed

Diff for: 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 {

Diff for: internal/arduino/cores/packagemanager/install_uninstall.go

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

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

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

Diff for: 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)