Skip to content

Commit cc65e27

Browse files
committed
Use normalized version as keys for matching versions in maps for platforms and tools
1 parent 409ed54 commit cc65e27

File tree

7 files changed

+26
-24
lines changed

7 files changed

+26
-24
lines changed

Diff for: arduino/cores/cores.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,10 @@ type Platform struct {
4040
Architecture string // The name of the architecture of this package.
4141
Name string
4242
Category string
43-
Releases map[string]*PlatformRelease // The Releases of this platform, labeled by version.
44-
Package *Package `json:"-"`
45-
ManuallyInstalled bool // true if the Platform has been installed without the CLI
46-
Deprecated bool // true if the Platform has been deprecated
43+
Releases map[semver.NormalizedString]*PlatformRelease // The Releases of this platform, labeled by version.
44+
Package *Package `json:"-"`
45+
ManuallyInstalled bool // true if the Platform has been installed without the CLI
46+
Deprecated bool // true if the Platform has been deprecated
4747
}
4848

4949
// PlatformReleaseHelp represents the help URL for this Platform release
@@ -191,9 +191,9 @@ func (d *MonitorDependency) String() string {
191191
// GetOrCreateRelease returns the specified release corresponding the provided version,
192192
// or creates a new one if not found.
193193
func (platform *Platform) GetOrCreateRelease(version *semver.Version) *PlatformRelease {
194-
tag := ""
194+
var tag semver.NormalizedString
195195
if version != nil {
196-
tag = version.String()
196+
tag = version.NormalizedString()
197197
}
198198
if release, ok := platform.Releases[tag]; ok {
199199
return release
@@ -213,7 +213,7 @@ func (platform *Platform) GetOrCreateRelease(version *semver.Version) *PlatformR
213213
// or nil if not found.
214214
func (platform *Platform) FindReleaseWithVersion(version *semver.Version) *PlatformRelease {
215215
// use as an fmt.Stringer
216-
return platform.Releases[version.String()]
216+
return platform.Releases[version.NormalizedString()]
217217
}
218218

219219
// GetLatestRelease returns the latest release of this platform, or nil if no releases

Diff for: arduino/cores/cores_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ func TestRequiresToolReleaseDiscovery(t *testing.T) {
7373
Version: semver.ParseRelaxed("0.1.0"),
7474
Tool: &Tool{
7575
Name: toolDependencyName + "not",
76-
Releases: map[string]*ToolRelease{
76+
Releases: map[semver.NormalizedString]*ToolRelease{
7777
"1.0.0": {Version: semver.ParseRelaxed("1.0.0")},
7878
"0.1.0": {Version: semver.ParseRelaxed("0.1.0")},
7979
"0.0.1": {Version: semver.ParseRelaxed("0.0.1")},

Diff for: arduino/cores/packageindex/index_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ func TestIndexFromPlatformRelease(t *testing.T) {
106106
Tools: map[string]*cores.Tool{
107107
"serial-discovery": {
108108
Name: "serial-discovery",
109-
Releases: map[string]*cores.ToolRelease{
109+
Releases: map[semver.NormalizedString]*cores.ToolRelease{
110110
"1.0.0": {
111111
Version: semver.ParseRelaxed("1.0.0"),
112112
Flavors: []*cores.Flavor{
@@ -157,7 +157,7 @@ func TestIndexFromPlatformRelease(t *testing.T) {
157157
},
158158
"ble-discovery": {
159159
Name: "ble-discovery",
160-
Releases: map[string]*cores.ToolRelease{
160+
Releases: map[semver.NormalizedString]*cores.ToolRelease{
161161
"1.0.0": {
162162
Version: semver.ParseRelaxed("1.0.0"),
163163
Flavors: []*cores.Flavor{
@@ -209,7 +209,7 @@ func TestIndexFromPlatformRelease(t *testing.T) {
209209
},
210210
"bossac": {
211211
Name: "bossac",
212-
Releases: map[string]*cores.ToolRelease{
212+
Releases: map[semver.NormalizedString]*cores.ToolRelease{
213213
"1.6.1-arduino": {
214214
Version: semver.ParseRelaxed("1.6.1-arduino"),
215215
Flavors: []*cores.Flavor{
@@ -260,7 +260,7 @@ func TestIndexFromPlatformRelease(t *testing.T) {
260260
},
261261
"arm-none-eabi-gcc": {
262262
Name: "arm-none-eabi-gcc",
263-
Releases: map[string]*cores.ToolRelease{
263+
Releases: map[semver.NormalizedString]*cores.ToolRelease{
264264
"4.8.3-2014q1": {
265265
Version: semver.ParseRelaxed("4.8.3-2014q1"),
266266
Flavors: []*cores.Flavor{

Diff for: arduino/cores/packagemanager/download.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ func (pme *Explorer) FindPlatformRelease(ref *PlatformReference) *cores.Platform
6161
if platform == nil {
6262
return nil
6363
}
64-
platformRelease, ok := platform.Releases[ref.PlatformVersion.String()]
64+
platformRelease, ok := platform.Releases[ref.PlatformVersion.NormalizedString()]
6565
if !ok {
6666
return nil
6767
}

Diff for: arduino/cores/status.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"fmt"
2121

2222
"github.com/pmylund/sortutil"
23+
semver "go.bug.st/relaxed-semver"
2324
)
2425

2526
// Packages represents a set of Packages
@@ -91,7 +92,7 @@ func (packages Packages) GetPlatformReleaseToolDependencies(release *PlatformRel
9192
if !exists {
9293
return nil, fmt.Errorf(tr("tool %s not found"), dep.ToolName)
9394
}
94-
toolRelease, exists := tool.Releases[dep.ToolVersion.String()]
95+
toolRelease, exists := tool.Releases[dep.ToolVersion.NormalizedString()]
9596
if !exists {
9697
return nil, fmt.Errorf(tr("tool version %s not found"), dep.ToolVersion)
9798
}
@@ -162,7 +163,7 @@ func (targetPackage *Package) GetOrCreatePlatform(architecture string) *Platform
162163
}
163164
targetPlatform := &Platform{
164165
Architecture: architecture,
165-
Releases: map[string]*PlatformRelease{},
166+
Releases: map[semver.NormalizedString]*PlatformRelease{},
166167
Package: targetPackage,
167168
}
168169
targetPackage.Platforms[architecture] = targetPlatform
@@ -178,7 +179,7 @@ func (targetPackage *Package) GetOrCreateTool(name string) *Tool {
178179
tool := &Tool{
179180
Name: name,
180181
Package: targetPackage,
181-
Releases: map[string]*ToolRelease{},
182+
Releases: map[semver.NormalizedString]*ToolRelease{},
182183
}
183184
targetPackage.Tools[name] = tool
184185
return tool

Diff for: arduino/cores/tools.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ import (
2727

2828
// Tool represents a single Tool, part of a Package.
2929
type Tool struct {
30-
Name string `json:"name"` // The Name of the Tool.
31-
Releases map[string]*ToolRelease `json:"releases"` // Maps Version to Release.
32-
Package *Package `json:"-"`
30+
Name string `json:"name"` // The Name of the Tool.
31+
Releases map[semver.NormalizedString]*ToolRelease `json:"releases"` // Maps Version to Release.
32+
Package *Package `json:"-"`
3333
}
3434

3535
// ToolRelease represents a single release of a tool
@@ -49,21 +49,21 @@ type Flavor struct {
4949
// GetOrCreateRelease returns the ToolRelease object with the specified version
5050
// or creates a new one if not found
5151
func (tool *Tool) GetOrCreateRelease(version *semver.RelaxedVersion) *ToolRelease {
52-
if release, ok := tool.Releases[version.String()]; ok {
52+
if release, ok := tool.Releases[version.NormalizedString()]; ok {
5353
return release
5454
}
5555
release := &ToolRelease{
5656
Version: version,
5757
Tool: tool,
5858
}
59-
tool.Releases[version.String()] = release
59+
tool.Releases[version.NormalizedString()] = release
6060
return release
6161
}
6262

6363
// FindReleaseWithRelaxedVersion returns the specified release corresponding the provided version,
6464
// or nil if not found.
6565
func (tool *Tool) FindReleaseWithRelaxedVersion(version *semver.RelaxedVersion) *ToolRelease {
66-
return tool.Releases[version.String()]
66+
return tool.Releases[version.NormalizedString()]
6767
}
6868

6969
// GetAllReleasesVersions returns all the version numbers in this Core Package.

Diff for: legacy/builder/test/rewrite_hardware_keys_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"github.com/arduino/arduino-cli/legacy/builder/types"
2424
properties "github.com/arduino/go-properties-orderedmap"
2525
"github.com/stretchr/testify/require"
26+
semver "go.bug.st/relaxed-semver"
2627
)
2728

2829
func TestRewriteHardwareKeys(t *testing.T) {
@@ -41,7 +42,7 @@ func TestRewriteHardwareKeys(t *testing.T) {
4142
}
4243
aPackage.Platforms["dummy"] = &cores.Platform{
4344
Architecture: "dummy",
44-
Releases: map[string]*cores.PlatformRelease{
45+
Releases: map[semver.NormalizedString]*cores.PlatformRelease{
4546
"": platform,
4647
},
4748
}
@@ -82,7 +83,7 @@ func TestRewriteHardwareKeysWithRewritingDisabled(t *testing.T) {
8283
}
8384
aPackage.Platforms["dummy"] = &cores.Platform{
8485
Architecture: "dummy",
85-
Releases: map[string]*cores.PlatformRelease{
86+
Releases: map[semver.NormalizedString]*cores.PlatformRelease{
8687
"": platform,
8788
},
8889
}

0 commit comments

Comments
 (0)