Skip to content

Commit 9bdca8b

Browse files
authored
Merge pull request #199 from per1234/toolsdependencies-data
Provide object-level `packages[].platforms[].toolsDependencies[]` package index data to rules
2 parents 9cd738f + d2fc80e commit 9bdca8b

File tree

5 files changed

+212
-34
lines changed

5 files changed

+212
-34
lines changed

Diff for: internal/project/projectdata/packageindex.go

+12
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ func InitializeForPackageIndex() {
4343
packageIndexPackages = nil
4444
packageIndexPlatforms = nil
4545
packageIndexBoards = nil
46+
packageIndexToolsDependencies = nil
4647
packageIndexTools = nil
4748
packageIndexSystems = nil
4849
packageIndexSchemaValidationResult = nil
@@ -57,6 +58,10 @@ func InitializeForPackageIndex() {
5758
packageIndexBoards = append(packageIndexBoards, getPackageIndexData(platformData.Object, platformData.JSONPointer, "boards", platformData.ID, " - {{index . 0}}", []string{"name"})...)
5859
}
5960

61+
for _, platformData := range PackageIndexPlatforms() {
62+
packageIndexToolsDependencies = append(packageIndexToolsDependencies, getPackageIndexData(platformData.Object, platformData.JSONPointer, "toolsDependencies", platformData.ID, " - {{index . 0}}:{{index . 1}}@{{index . 2}}", []string{"packager", "name", "version"})...)
63+
}
64+
6065
for _, packageData := range PackageIndexPackages() {
6166
packageIndexTools = append(packageIndexTools, getPackageIndexData(packageData.Object, packageData.JSONPointer, "tools", packageData.ID, ":{{index . 0}}@{{index . 1}}", []string{"name", "version"})...)
6267
}
@@ -111,6 +116,13 @@ func PackageIndexBoards() []PackageIndexData {
111116
return packageIndexBoards
112117
}
113118

119+
var packageIndexToolsDependencies []PackageIndexData
120+
121+
// PackageIndexToolsDependencies returns the slice of tool dependency data for the package index.
122+
func PackageIndexToolsDependencies() []PackageIndexData {
123+
return packageIndexToolsDependencies
124+
}
125+
114126
var packageIndexTools []PackageIndexData
115127

116128
// PackageIndexTools returns the slice of tool data for the package index.

Diff for: internal/project/projectdata/packageindex_test.go

+149
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ func TestInitializeForPackageIndex(t *testing.T) {
4747
packageIndexPlatformsDataAssertion []PackageIndexData
4848
packageIndexBoardsAssertion assert.ValueAssertionFunc
4949
packageIndexBoardsDataAssertion []PackageIndexData
50+
packageIndexToolsDependenciesAssertion assert.ValueAssertionFunc
51+
packageIndexToolsDependenciesDataAssertion []PackageIndexData
5052
packageIndexToolsAssertion assert.ValueAssertionFunc
5153
packageIndexToolsDataAssertion []PackageIndexData
5254
packageIndexSystemsAssertion assert.ValueAssertionFunc
@@ -124,6 +126,41 @@ func TestInitializeForPackageIndex(t *testing.T) {
124126
JSONPointer: "/packages/1/platforms/1/boards/1",
125127
},
126128
},
129+
packageIndexToolsDependenciesAssertion: assert.NotNil,
130+
packageIndexToolsDependenciesDataAssertion: []PackageIndexData{
131+
{
132+
ID: "foopackager1:[email protected] - arduino:[email protected]",
133+
JSONPointer: "/packages/0/platforms/0/toolsDependencies/0",
134+
},
135+
{
136+
ID: "foopackager1:[email protected] - arduino:[email protected]",
137+
JSONPointer: "/packages/0/platforms/0/toolsDependencies/1",
138+
},
139+
{
140+
ID: "foopackager1:[email protected] - arduino:[email protected]",
141+
JSONPointer: "/packages/0/platforms/1/toolsDependencies/0",
142+
},
143+
{
144+
ID: "foopackager1:[email protected] - arduino:[email protected]",
145+
JSONPointer: "/packages/0/platforms/1/toolsDependencies/1",
146+
},
147+
{
148+
ID: "foopackager2:[email protected] - arduino:arm-none-eabi-gcc@7-2017q4",
149+
JSONPointer: "/packages/1/platforms/0/toolsDependencies/0",
150+
},
151+
{
152+
ID: "foopackager2:[email protected] - arduino:[email protected]",
153+
JSONPointer: "/packages/1/platforms/0/toolsDependencies/1",
154+
},
155+
{
156+
ID: "foopackager2:[email protected] - arduino:[email protected]",
157+
JSONPointer: "/packages/1/platforms/1/toolsDependencies/0",
158+
},
159+
{
160+
ID: "foopackager2:[email protected] - arduino:arm-none-eabi-gcc@7-2017q4",
161+
JSONPointer: "/packages/1/platforms/1/toolsDependencies/1",
162+
},
163+
},
127164
packageIndexToolsAssertion: assert.NotNil,
128165
packageIndexToolsDataAssertion: []PackageIndexData{
129166
{
@@ -239,6 +276,57 @@ func TestInitializeForPackageIndex(t *testing.T) {
239276
JSONPointer: "/packages/1/platforms/2/boards/1",
240277
},
241278
},
279+
packageIndexToolsDependenciesAssertion: assert.NotNil,
280+
packageIndexToolsDependenciesDataAssertion: []PackageIndexData{
281+
{
282+
ID: "/packages/0/platforms/0/toolsDependencies/0",
283+
JSONPointer: "/packages/0/platforms/0/toolsDependencies/0",
284+
},
285+
{
286+
ID: "/packages/0/platforms/0/toolsDependencies/1",
287+
JSONPointer: "/packages/0/platforms/0/toolsDependencies/1",
288+
},
289+
{
290+
ID: "/packages/0/platforms/1/toolsDependencies/0",
291+
JSONPointer: "/packages/0/platforms/1/toolsDependencies/0",
292+
},
293+
{
294+
ID: "/packages/0/platforms/1/toolsDependencies/1",
295+
JSONPointer: "/packages/0/platforms/1/toolsDependencies/1",
296+
},
297+
{
298+
ID: "/packages/1/platforms/0/toolsDependencies/0",
299+
JSONPointer: "/packages/1/platforms/0/toolsDependencies/0",
300+
},
301+
{
302+
ID: "/packages/1/platforms/0/toolsDependencies/1",
303+
JSONPointer: "/packages/1/platforms/0/toolsDependencies/1",
304+
},
305+
{
306+
ID: "/packages/1/platforms/1/toolsDependencies/0",
307+
JSONPointer: "/packages/1/platforms/1/toolsDependencies/0",
308+
},
309+
{
310+
ID: "/packages/1/platforms/1/toolsDependencies/1",
311+
JSONPointer: "/packages/1/platforms/1/toolsDependencies/1",
312+
},
313+
{
314+
ID: "/packages/1/platforms/2/toolsDependencies/0",
315+
JSONPointer: "/packages/1/platforms/2/toolsDependencies/0",
316+
},
317+
{
318+
ID: "/packages/1/platforms/2/toolsDependencies/1",
319+
JSONPointer: "/packages/1/platforms/2/toolsDependencies/1",
320+
},
321+
{
322+
ID: "/packages/1/platforms/2/toolsDependencies/2",
323+
JSONPointer: "/packages/1/platforms/2/toolsDependencies/2",
324+
},
325+
{
326+
ID: "foopackager2:[email protected] - arduino:[email protected]",
327+
JSONPointer: "/packages/1/platforms/2/toolsDependencies/3",
328+
},
329+
},
242330
packageIndexToolsAssertion: assert.NotNil,
243331
packageIndexToolsDataAssertion: []PackageIndexData{
244332
{
@@ -362,6 +450,57 @@ func TestInitializeForPackageIndex(t *testing.T) {
362450
JSONPointer: "/packages/1/platforms/2/boards/1",
363451
},
364452
},
453+
packageIndexToolsDependenciesAssertion: assert.NotNil,
454+
packageIndexToolsDependenciesDataAssertion: []PackageIndexData{
455+
{
456+
ID: "/packages/0/platforms/0/toolsDependencies/0",
457+
JSONPointer: "/packages/0/platforms/0/toolsDependencies/0",
458+
},
459+
{
460+
ID: "/packages/0/platforms/0/toolsDependencies/1",
461+
JSONPointer: "/packages/0/platforms/0/toolsDependencies/1",
462+
},
463+
{
464+
ID: "/packages/0/platforms/1/toolsDependencies/0",
465+
JSONPointer: "/packages/0/platforms/1/toolsDependencies/0",
466+
},
467+
{
468+
ID: "/packages/0/platforms/1/toolsDependencies/1",
469+
JSONPointer: "/packages/0/platforms/1/toolsDependencies/1",
470+
},
471+
{
472+
ID: "/packages/1/platforms/0/toolsDependencies/0",
473+
JSONPointer: "/packages/1/platforms/0/toolsDependencies/0",
474+
},
475+
{
476+
ID: "/packages/1/platforms/0/toolsDependencies/1",
477+
JSONPointer: "/packages/1/platforms/0/toolsDependencies/1",
478+
},
479+
{
480+
ID: "/packages/1/platforms/1/toolsDependencies/0",
481+
JSONPointer: "/packages/1/platforms/1/toolsDependencies/0",
482+
},
483+
{
484+
ID: "/packages/1/platforms/1/toolsDependencies/1",
485+
JSONPointer: "/packages/1/platforms/1/toolsDependencies/1",
486+
},
487+
{
488+
ID: "/packages/1/platforms/2/toolsDependencies/0",
489+
JSONPointer: "/packages/1/platforms/2/toolsDependencies/0",
490+
},
491+
{
492+
ID: "/packages/1/platforms/2/toolsDependencies/1",
493+
JSONPointer: "/packages/1/platforms/2/toolsDependencies/1",
494+
},
495+
{
496+
ID: "/packages/1/platforms/2/toolsDependencies/2",
497+
JSONPointer: "/packages/1/platforms/2/toolsDependencies/2",
498+
},
499+
{
500+
ID: "foopackager2:[email protected] - arduino:[email protected]",
501+
JSONPointer: "/packages/1/platforms/2/toolsDependencies/3",
502+
},
503+
},
365504
packageIndexToolsAssertion: assert.NotNil,
366505
packageIndexToolsDataAssertion: []PackageIndexData{
367506
{
@@ -411,6 +550,7 @@ func TestInitializeForPackageIndex(t *testing.T) {
411550
packageIndexPackagesAssertion: assert.Nil,
412551
packageIndexPlatformsAssertion: assert.Nil,
413552
packageIndexBoardsAssertion: assert.Nil,
553+
packageIndexToolsDependenciesAssertion: assert.Nil,
414554
packageIndexToolsAssertion: assert.Nil,
415555
packageIndexSystemsAssertion: assert.Nil,
416556
packageIndexSchemaValidationResultAssertion: assert.Nil,
@@ -424,6 +564,7 @@ func TestInitializeForPackageIndex(t *testing.T) {
424564
packageIndexPackagesAssertion: assert.Nil,
425565
packageIndexPlatformsAssertion: assert.Nil,
426566
packageIndexBoardsAssertion: assert.Nil,
567+
packageIndexToolsDependenciesAssertion: assert.Nil,
427568
packageIndexToolsAssertion: assert.Nil,
428569
packageIndexSystemsAssertion: assert.Nil,
429570
packageIndexSchemaValidationResultAssertion: assert.Nil,
@@ -469,6 +610,14 @@ func TestInitializeForPackageIndex(t *testing.T) {
469610
}
470611
}
471612

613+
testTable.packageIndexToolsDependenciesAssertion(t, PackageIndexToolsDependencies(), testTable.testName)
614+
if PackageIndexToolsDependencies() != nil {
615+
for index, packageIndexToolsDependency := range PackageIndexToolsDependencies() {
616+
assert.Equal(t, testTable.packageIndexToolsDependenciesDataAssertion[index].ID, packageIndexToolsDependency.ID, testTable.testName)
617+
assert.Equal(t, testTable.packageIndexToolsDependenciesDataAssertion[index].JSONPointer, packageIndexToolsDependency.JSONPointer, testTable.testName)
618+
}
619+
}
620+
472621
testTable.packageIndexToolsAssertion(t, PackageIndexTools(), testTable.testName)
473622
if PackageIndexTools() != nil {
474623
for index, packageIndexTool := range PackageIndexTools() {

Diff for: internal/project/projectdata/testdata/packageindexes/empty-ids/package_foo_index.json

+22-12
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,12 @@
5252
{
5353
"packager": "arduino",
5454
"name": "avr-gcc",
55-
"version": "4.8.1-arduino5"
55+
"version": "7.3.0-atmel3.6.1-arduino7"
5656
},
5757
{
5858
"packager": "arduino",
5959
"name": "avrdude",
60-
"version": "6.0.1-arduino5"
60+
"version": "6.3.0-arduino17"
6161
}
6262
]
6363
}
@@ -89,13 +89,13 @@
8989
"toolsDependencies": [
9090
{
9191
"packager": "arduino",
92-
"name": "avr-gcc",
93-
"version": "4.8.1-arduino5"
92+
"name": "arm-none-eabi-gcc",
93+
"version": "7-2017q4"
9494
},
9595
{
9696
"packager": "arduino",
97-
"name": "avrdude",
98-
"version": "6.0.1-arduino5"
97+
"name": "bossac",
98+
"version": "1.7.0-arduino3"
9999
}
100100
]
101101
},
@@ -115,13 +115,13 @@
115115
"toolsDependencies": [
116116
{
117117
"packager": "arduino",
118-
"name": "avr-gcc",
119-
"version": "4.8.1-arduino5"
118+
"name": "openocd",
119+
"version": "0.11.0-arduino2"
120120
},
121121
{
122122
"packager": "arduino",
123-
"name": "avrdude",
124-
"version": "6.0.1-arduino5"
123+
"name": "arm-none-eabi-gcc",
124+
"version": "7-2017q4"
125125
}
126126
]
127127
},
@@ -140,14 +140,24 @@
140140
"boards": [{ "name": "" }, { "name": "My Board Pro" }],
141141
"toolsDependencies": [
142142
{
143-
"packager": "arduino",
143+
"packager": "",
144144
"name": "avr-gcc",
145145
"version": "4.8.1-arduino5"
146146
},
147147
{
148148
"packager": "arduino",
149-
"name": "avrdude",
149+
"name": "",
150150
"version": "6.0.1-arduino5"
151+
},
152+
{
153+
"packager": "arduino",
154+
"name": "openocd",
155+
"version": ""
156+
},
157+
{
158+
"packager": "arduino",
159+
"name": "CMSIS",
160+
"version": "4.5.0"
151161
}
152162
]
153163
}

Diff for: internal/project/projectdata/testdata/packageindexes/missing-ids/package_foo_index.json

+19-12
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,12 @@
5151
{
5252
"packager": "arduino",
5353
"name": "avr-gcc",
54-
"version": "4.8.1-arduino5"
54+
"version": "7.3.0-atmel3.6.1-arduino7"
5555
},
5656
{
5757
"packager": "arduino",
5858
"name": "avrdude",
59-
"version": "6.0.1-arduino5"
59+
"version": "6.3.0-arduino17"
6060
}
6161
]
6262
}
@@ -87,13 +87,13 @@
8787
"toolsDependencies": [
8888
{
8989
"packager": "arduino",
90-
"name": "avr-gcc",
91-
"version": "4.8.1-arduino5"
90+
"name": "arm-none-eabi-gcc",
91+
"version": "7-2017q4"
9292
},
9393
{
9494
"packager": "arduino",
95-
"name": "avrdude",
96-
"version": "6.0.1-arduino5"
95+
"name": "bossac",
96+
"version": "1.7.0-arduino3"
9797
}
9898
]
9999
},
@@ -112,13 +112,13 @@
112112
"toolsDependencies": [
113113
{
114114
"packager": "arduino",
115-
"name": "avr-gcc",
116-
"version": "4.8.1-arduino5"
115+
"name": "openocd",
116+
"version": "0.11.0-arduino2"
117117
},
118118
{
119119
"packager": "arduino",
120-
"name": "avrdude",
121-
"version": "6.0.1-arduino5"
120+
"name": "arm-none-eabi-gcc",
121+
"version": "7-2017q4"
122122
}
123123
]
124124
},
@@ -137,14 +137,21 @@
137137
"boards": [{ "foo": "My Board" }, { "name": "My Board Pro" }],
138138
"toolsDependencies": [
139139
{
140-
"packager": "arduino",
141140
"name": "avr-gcc",
142141
"version": "4.8.1-arduino5"
143142
},
144143
{
145144
"packager": "arduino",
146-
"name": "avrdude",
147145
"version": "6.0.1-arduino5"
146+
},
147+
{
148+
"packager": "arduino",
149+
"name": "openocd"
150+
},
151+
{
152+
"packager": "arduino",
153+
"name": "CMSIS",
154+
"version": "4.5.0"
148155
}
149156
]
150157
}

0 commit comments

Comments
 (0)