From 55401e9b04dbe6c4935a4c803a7749363ccbf3a3 Mon Sep 17 00:00:00 2001 From: Alessio Perugini Date: Tue, 7 Nov 2023 16:06:24 +0100 Subject: [PATCH] apply CR suggestions --- arduino/cores/cores.go | 25 ++++----------- internal/cli/arguments/completion.go | 5 ++- internal/cli/core/search.go | 48 +++++++++++++++------------- 3 files changed, 34 insertions(+), 44 deletions(-) diff --git a/arduino/cores/cores.go b/arduino/cores/cores.go index a03d9875db8..e6111345e00 100644 --- a/arduino/cores/cores.go +++ b/arduino/cores/cores.go @@ -236,21 +236,15 @@ func (platform *Platform) GetLatestCompatibleRelease() *PlatformRelease { if len(platform.Releases) == 0 { return nil } - maximum := &PlatformRelease{Version: &semver.Version{}} + var maximum *PlatformRelease for _, release := range platform.Releases { if !release.IsCompatible() { continue } - if release.Version.GreaterThan(maximum.Version) { + if maximum == nil || release.Version.GreaterThan(maximum.Version) { maximum = release } } - - // In case no compatible versions found return nil - if maximum.Version.Equal(&semver.Version{}) { - return nil - } - return maximum } @@ -306,18 +300,13 @@ func (platform *Platform) latestReleaseVersion() *semver.Version { // latestCompatibleReleaseVersion obtains latest version number, for platforms that contains compatible tools, or nil if no release available func (platform *Platform) latestCompatibleReleaseVersion() *semver.Version { versions := platform.GetAllCompatibleReleasesVersions() - if len(versions) == 0 { - return nil - } - max := versions[0] - - for i := 1; i < len(versions); i++ { - if versions[i].GreaterThan(max) { - max = versions[i] + var maxVer *semver.Version + for _, v := range versions { + if maxVer == nil || v.GreaterThan(maxVer) { + maxVer = v } } - - return max + return maxVer } // GetAllInstalled returns all installed PlatformRelease diff --git a/internal/cli/arguments/completion.go b/internal/cli/arguments/completion.go index c6d2753e1cc..843f200c42b 100644 --- a/internal/cli/arguments/completion.go +++ b/internal/cli/arguments/completion.go @@ -113,10 +113,9 @@ func GetInstallableCores() []string { var res []string // transform the data structure for the completion for _, i := range platforms.GetSearchOutput() { - if i.GetLatestCompatibleVersion() == "" { - continue + if latest := i.GetLatestCompatibleRelease(); latest != nil { + res = append(res, i.GetMetadata().GetId()+"\t"+latest.GetName()) } - res = append(res, i.GetMetadata().GetId()+"\t"+i.GetLatestCompatibleRelease().GetName()) } return res } diff --git a/internal/cli/core/search.go b/internal/cli/core/search.go index 276204f1e6b..4e20a129368 100644 --- a/internal/cli/core/search.go +++ b/internal/cli/core/search.go @@ -107,33 +107,35 @@ func (sr searchResults) Data() interface{} { } func (sr searchResults) String() string { - if len(sr.platforms) > 0 { - t := table.New() - t.SetHeader(tr("ID"), tr("Version"), tr("Name")) - for _, platform := range sr.platforms { - // When allVersions is not requested we only show the latest compatible version - if !sr.allVersions { - if latestCompatible := platform.GetLatestCompatibleRelease(); latestCompatible != nil { - name := latestCompatible.Name - if latestCompatible.Deprecated { - name = fmt.Sprintf("[%s] %s", tr("DEPRECATED"), latestCompatible.Name) - } - t.AddRow(platform.Id, latestCompatible.Version, name) - } - continue - } + if len(sr.platforms) == 0 { + return tr("No platforms matching your search.") + } + + t := table.New() + t.SetHeader(tr("ID"), tr("Version"), tr("Name")) - for _, release := range platform.Releases.Values() { - name := release.Name - if platform.Deprecated { - name = fmt.Sprintf("[%s] %s", tr("DEPRECATED"), release.Name) - } - t.AddRow(platform.Id, release.Version, name) + addRow := func(platform *result.PlatformSummary, release *result.PlatformRelease) { + name := release.Name + if release.Deprecated { + name = fmt.Sprintf("[%s] %s", tr("DEPRECATED"), release.Name) + } + t.AddRow(platform.Id, release.Version, name) + } + + for _, platform := range sr.platforms { + // When allVersions is not requested we only show the latest compatible version + if !sr.allVersions { + if latestCompatible := platform.GetLatestCompatibleRelease(); latestCompatible != nil { + addRow(platform, latestCompatible) } + continue + } + + for _, release := range platform.Releases.Values() { + addRow(platform, release) } - return t.Render() } - return tr("No platforms matching your search.") + return t.Render() } // indexesNeedUpdating returns whether one or more index files need updating.