Skip to content

Commit c1ce019

Browse files
authored
simplified Tool.LatestRelease() and some code makeup (#1440)
* Simplified implementation of Tool.LatestRelease/GetLatestInstalled methods * Some code make-up
1 parent 7d7ade9 commit c1ce019

File tree

2 files changed

+49
-52
lines changed

2 files changed

+49
-52
lines changed

arduino/cores/packagemanager/package_manager_test.go

+42-28
Original file line numberDiff line numberDiff line change
@@ -346,34 +346,48 @@ func TestFindToolsRequiredFromPlatformRelease(t *testing.T) {
346346

347347
pm := packagemanager.NewPackageManager(fakePath, fakePath, fakePath, fakePath)
348348
pack := pm.Packages.GetOrCreatePackage("arduino")
349-
// some tool
350-
tool := pack.GetOrCreateTool("some-tool")
351-
toolRelease := tool.GetOrCreateRelease(semver.ParseRelaxed("4.2.0"))
352-
// We set this to fake the tool is installed
353-
toolRelease.InstallDir = fakePath
354-
// some tool
355-
tool = pack.GetOrCreateTool("some-tool")
356-
toolRelease = tool.GetOrCreateRelease(semver.ParseRelaxed("5.6.7"))
357-
// We set this to fake the tool is installed
358-
toolRelease.InstallDir = fakePath
359-
// some other tool
360-
tool = pack.GetOrCreateTool("some-other-tool")
361-
toolRelease = tool.GetOrCreateRelease(semver.ParseRelaxed("6.6.6"))
362-
// We set this to fake the tool is installed
363-
toolRelease.InstallDir = fakePath
364-
// ble-discovery tool
365-
tool = pack.GetOrCreateTool("ble-discovery")
366-
toolRelease = tool.GetOrCreateRelease(semver.ParseRelaxed("1.0.0"))
367-
// We set this to fake the tool is installed
368-
toolRelease.InstallDir = fakePath
369-
tool.GetOrCreateRelease(semver.ParseRelaxed("0.1.0"))
370-
371-
// serial-discovery tool
372-
tool = pack.GetOrCreateTool("serial-discovery")
373-
tool.GetOrCreateRelease(semver.ParseRelaxed("1.0.0"))
374-
toolRelease = tool.GetOrCreateRelease(semver.ParseRelaxed("0.1.0"))
375-
// We set this to fake the tool is installed
376-
toolRelease.InstallDir = fakePath
349+
350+
{
351+
// some tool
352+
tool := pack.GetOrCreateTool("some-tool")
353+
toolRelease := tool.GetOrCreateRelease(semver.ParseRelaxed("4.2.0"))
354+
// We set this to fake the tool is installed
355+
toolRelease.InstallDir = fakePath
356+
}
357+
358+
{
359+
// some tool
360+
tool := pack.GetOrCreateTool("some-tool")
361+
toolRelease := tool.GetOrCreateRelease(semver.ParseRelaxed("5.6.7"))
362+
// We set this to fake the tool is installed
363+
toolRelease.InstallDir = fakePath
364+
}
365+
366+
{
367+
// some other tool
368+
tool := pack.GetOrCreateTool("some-other-tool")
369+
toolRelease := tool.GetOrCreateRelease(semver.ParseRelaxed("6.6.6"))
370+
// We set this to fake the tool is installed
371+
toolRelease.InstallDir = fakePath
372+
}
373+
374+
{
375+
// ble-discovery tool
376+
tool := pack.GetOrCreateTool("ble-discovery")
377+
toolRelease := tool.GetOrCreateRelease(semver.ParseRelaxed("1.0.0"))
378+
// We set this to fake the tool is installed
379+
toolRelease.InstallDir = fakePath
380+
tool.GetOrCreateRelease(semver.ParseRelaxed("0.1.0"))
381+
}
382+
383+
{
384+
// serial-discovery tool
385+
tool := pack.GetOrCreateTool("serial-discovery")
386+
tool.GetOrCreateRelease(semver.ParseRelaxed("1.0.0"))
387+
toolRelease := tool.GetOrCreateRelease(semver.ParseRelaxed("0.1.0"))
388+
// We set this to fake the tool is installed
389+
toolRelease.InstallDir = fakePath
390+
}
377391

378392
platform := pack.GetOrCreatePlatform("avr")
379393
release := platform.GetOrCreateRelease(semver.MustParse("1.0.0"))

arduino/cores/tools.go

+7-24
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,8 @@ func (tool *Tool) FindReleaseWithRelaxedVersion(version *semver.RelaxedVersion)
6868

6969
// GetAllReleasesVersions returns all the version numbers in this Core Package.
7070
func (tool *Tool) GetAllReleasesVersions() []*semver.RelaxedVersion {
71-
releases := tool.Releases
7271
versions := []*semver.RelaxedVersion{}
73-
for _, release := range releases {
72+
for _, release := range tool.Releases {
7473
versions = append(versions, release.Version)
7574
}
7675

@@ -79,37 +78,21 @@ func (tool *Tool) GetAllReleasesVersions() []*semver.RelaxedVersion {
7978

8079
// LatestRelease obtains latest version of a core package.
8180
func (tool *Tool) LatestRelease() *ToolRelease {
82-
latest := tool.latestReleaseVersion()
83-
if latest == nil {
84-
return nil
85-
}
86-
87-
return tool.FindReleaseWithRelaxedVersion(latest)
88-
}
89-
90-
// latestReleaseVersion obtains latest version number.
91-
func (tool *Tool) latestReleaseVersion() *semver.RelaxedVersion {
92-
versions := tool.GetAllReleasesVersions()
93-
if len(versions) == 0 {
94-
return nil
95-
}
96-
max := versions[0]
97-
for i := 1; i < len(versions); i++ {
98-
if versions[i].GreaterThan(max) {
99-
max = versions[i]
81+
var latest *ToolRelease
82+
for _, release := range tool.Releases {
83+
if latest == nil || release.Version.GreaterThan(latest.Version) {
84+
latest = release
10085
}
10186
}
102-
return max
87+
return latest
10388
}
10489

10590
// GetLatestInstalled returns the latest installed ToolRelease for the Tool, or nil if no releases are installed.
10691
func (tool *Tool) GetLatestInstalled() *ToolRelease {
10792
var latest *ToolRelease
10893
for _, release := range tool.Releases {
10994
if release.IsInstalled() {
110-
if latest == nil {
111-
latest = release
112-
} else if latest.Version.LessThan(release.Version) {
95+
if latest == nil || latest.Version.LessThan(release.Version) {
11396
latest = release
11497
}
11598
}

0 commit comments

Comments
 (0)