Skip to content

Commit c7fe06d

Browse files
committed
Added parsing of monitorDependecies field in package index
1 parent c1ce019 commit c7fe06d

File tree

5 files changed

+79
-5
lines changed

5 files changed

+79
-5
lines changed

arduino/cores/cores.go

+25
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ type PlatformRelease struct {
5151
BoardsManifest []*BoardManifest
5252
ToolDependencies ToolDependencies
5353
DiscoveryDependencies DiscoveryDependencies
54+
MonitorDependencies MonitorDependencies
5455
Help PlatformReleaseHelp `json:"-"`
5556
Platform *Platform `json:"-"`
5657
Properties *properties.Map `json:"-"`
@@ -142,6 +143,30 @@ func (d *DiscoveryDependency) String() string {
142143
return fmt.Sprintf("%s:%s", d.Packager, d.Name)
143144
}
144145

146+
// MonitorDependencies is a list of MonitorDependency
147+
type MonitorDependencies []*MonitorDependency
148+
149+
// Sort the DiscoveryDependencies by name.
150+
func (d MonitorDependencies) Sort() {
151+
sort.Slice(d, func(i, j int) bool {
152+
if d[i].Packager != d[j].Packager {
153+
return d[i].Packager < d[j].Packager
154+
}
155+
return d[i].Name < d[j].Name
156+
})
157+
}
158+
159+
// MonitorDependency identifies a specific monitor, version is omitted
160+
// since the latest version will always be used
161+
type MonitorDependency struct {
162+
Name string
163+
Packager string
164+
}
165+
166+
func (d *MonitorDependency) String() string {
167+
return fmt.Sprintf("%s:%s", d.Packager, d.Name)
168+
}
169+
145170
// GetOrCreateRelease returns the specified release corresponding the provided version,
146171
// or creates a new one if not found.
147172
func (platform *Platform) GetOrCreateRelease(version *semver.Version) *PlatformRelease {

arduino/cores/packageindex/index.go

+28
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ type indexPlatformRelease struct {
6161
Help indexHelp `json:"help,omitempty"`
6262
ToolDependencies []indexToolDependency `json:"toolsDependencies"`
6363
DiscoveryDependencies []indexDiscoveryDependency `json:"discoveryDependencies"`
64+
MonitorDependencies []indexMonitorDependency `json:"monitorDependencies"`
6465
}
6566

6667
// indexToolDependency represents a single dependency of a core from a tool.
@@ -76,6 +77,12 @@ type indexDiscoveryDependency struct {
7677
Name string `json:"name"`
7778
}
7879

80+
// indexMonitorDependency represents a single dependency of a core from a pluggable monitor tool.
81+
type indexMonitorDependency struct {
82+
Packager string `json:"packager"`
83+
Name string `json:"name"`
84+
}
85+
7986
// indexToolRelease represents a single Tool from package_index.json file.
8087
type indexToolRelease struct {
8188
Name string `json:"name,required"`
@@ -152,6 +159,14 @@ func IndexFromPlatformRelease(pr *cores.PlatformRelease) Index {
152159
})
153160
}
154161

162+
monitors := []indexMonitorDependency{}
163+
for _, m := range pr.MonitorDependencies {
164+
monitors = append(monitors, indexMonitorDependency{
165+
Packager: m.Packager,
166+
Name: m.Name,
167+
})
168+
}
169+
155170
packageTools := []*indexToolRelease{}
156171
for name, tool := range pr.Platform.Package.Tools {
157172
for _, toolRelease := range tool.Releases {
@@ -196,6 +211,7 @@ func IndexFromPlatformRelease(pr *cores.PlatformRelease) Index {
196211
Help: indexHelp{Online: pr.Help.Online},
197212
ToolDependencies: tools,
198213
DiscoveryDependencies: discoveries,
214+
MonitorDependencies: monitors,
199215
}},
200216
Tools: packageTools,
201217
Help: indexHelp{Online: pr.Platform.Package.Help.Online},
@@ -251,6 +267,7 @@ func (inPlatformRelease indexPlatformRelease) extractPlatformIn(outPackage *core
251267
outPlatformRelease.BoardsManifest = inPlatformRelease.extractBoardsManifest()
252268
outPlatformRelease.ToolDependencies = inPlatformRelease.extractToolDependencies()
253269
outPlatformRelease.DiscoveryDependencies = inPlatformRelease.extractDiscoveryDependencies()
270+
outPlatformRelease.MonitorDependencies = inPlatformRelease.extractMonitorDependencies()
254271
return nil
255272
}
256273

@@ -277,6 +294,17 @@ func (inPlatformRelease indexPlatformRelease) extractDiscoveryDependencies() cor
277294
return res
278295
}
279296

297+
func (inPlatformRelease indexPlatformRelease) extractMonitorDependencies() cores.MonitorDependencies {
298+
res := make(cores.MonitorDependencies, len(inPlatformRelease.MonitorDependencies))
299+
for i, discovery := range inPlatformRelease.MonitorDependencies {
300+
res[i] = &cores.MonitorDependency{
301+
Name: discovery.Name,
302+
Packager: discovery.Packager,
303+
}
304+
}
305+
return res
306+
}
307+
280308
func (inPlatformRelease indexPlatformRelease) extractBoardsManifest() []*cores.BoardManifest {
281309
boards := make([]*cores.BoardManifest, len(inPlatformRelease.Boards))
282310
for i, board := range inPlatformRelease.Boards {

arduino/cores/packageindex/index_test.go

+21
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,16 @@ func TestIndexFromPlatformRelease(t *testing.T) {
8181
Name: "serial-discovery",
8282
},
8383
},
84+
MonitorDependencies: cores.MonitorDependencies{
85+
{
86+
Packager: "arduino",
87+
Name: "ble-monitor",
88+
},
89+
{
90+
Packager: "arduino",
91+
Name: "serial-monitor",
92+
},
93+
},
8494
Platform: &cores.Platform{
8595
Name: "Arduino AVR Boards",
8696
Architecture: "avr",
@@ -355,6 +365,16 @@ func TestIndexFromPlatformRelease(t *testing.T) {
355365
Name: "serial-discovery",
356366
},
357367
},
368+
MonitorDependencies: []indexMonitorDependency{
369+
{
370+
Packager: "arduino",
371+
Name: "ble-monitor",
372+
},
373+
{
374+
Packager: "arduino",
375+
Name: "serial-monitor",
376+
},
377+
},
358378
}},
359379
Tools: []*indexToolRelease{
360380
{
@@ -552,6 +572,7 @@ func TestIndexFromPlatformRelease(t *testing.T) {
552572
require.ElementsMatch(t, expectedPlatform.Boards, indexPlatform.Boards)
553573
require.ElementsMatch(t, expectedPlatform.ToolDependencies, indexPlatform.ToolDependencies)
554574
require.ElementsMatch(t, expectedPlatform.DiscoveryDependencies, indexPlatform.DiscoveryDependencies)
575+
require.ElementsMatch(t, expectedPlatform.MonitorDependencies, indexPlatform.MonitorDependencies)
555576
}
556577
}
557578
}

i18n/data/en.po

+1-1
Original file line numberDiff line numberDiff line change
@@ -2763,7 +2763,7 @@ msgstr "invalid path creating config dir: %[1]s error: %[2]w"
27632763
msgid "invalid path writing inventory file: %[1]s error: %[2]w"
27642764
msgstr "invalid path writing inventory file: %[1]s error: %[2]w"
27652765

2766-
#: arduino/cores/packageindex/index.go:239
2766+
#: arduino/cores/packageindex/index.go:255
27672767
msgid "invalid platform archive size: %s"
27682768
msgstr "invalid platform archive size: %s"
27692769

i18n/rice-box.go

+4-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)