Skip to content

Commit e75b3de

Browse files
authored
Merge pull request #293 from per1234/monitordependencies
Add schema-based rules for pluggable monitor dependencies data of package index
2 parents 2fde624 + ec2851f commit e75b3de

File tree

19 files changed

+1140
-10
lines changed

19 files changed

+1140
-10
lines changed

Diff for: etc/schemas/arduino-package-index-definitions-schema.json

+86
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,9 @@
455455
},
456456
"discoveryDependencies": {
457457
"$ref": "#/definitions/propertiesObjects/discoveryDependencies/permissive/object"
458+
},
459+
"monitorDependencies": {
460+
"$ref": "#/definitions/propertiesObjects/monitorDependencies/permissive/object"
458461
}
459462
},
460463
"additionalProperties": false
@@ -510,6 +513,9 @@
510513
},
511514
"discoveryDependencies": {
512515
"$ref": "#/definitions/propertiesObjects/discoveryDependencies/specification/object"
516+
},
517+
"monitorDependencies": {
518+
"$ref": "#/definitions/propertiesObjects/monitorDependencies/specification/object"
513519
}
514520
},
515521
"additionalProperties": false
@@ -565,6 +571,9 @@
565571
},
566572
"discoveryDependencies": {
567573
"$ref": "#/definitions/propertiesObjects/discoveryDependencies/strict/object"
574+
},
575+
"monitorDependencies": {
576+
"$ref": "#/definitions/propertiesObjects/monitorDependencies/strict/object"
568577
}
569578
},
570579
"additionalProperties": false
@@ -1084,6 +1093,83 @@
10841093
}
10851094
}
10861095
},
1096+
"monitorDependencies": {
1097+
"base": {
1098+
"object": {
1099+
"type": "array",
1100+
"items": {
1101+
"type": "object",
1102+
"required": ["packager", "name"]
1103+
}
1104+
}
1105+
},
1106+
"permissive": {
1107+
"object": {
1108+
"allOf": [
1109+
{
1110+
"$ref": "#/definitions/propertiesObjects/monitorDependencies/base/object"
1111+
},
1112+
{
1113+
"items": {
1114+
"properties": {
1115+
"packager": {
1116+
"$ref": "#/definitions/propertiesObjects/packager/permissive/object"
1117+
},
1118+
"name": {
1119+
"$ref": "#/definitions/propertiesObjects/toolName/permissive/object"
1120+
}
1121+
},
1122+
"additionalProperties": false
1123+
}
1124+
}
1125+
]
1126+
}
1127+
},
1128+
"specification": {
1129+
"object": {
1130+
"allOf": [
1131+
{
1132+
"$ref": "#/definitions/propertiesObjects/monitorDependencies/base/object"
1133+
},
1134+
{
1135+
"items": {
1136+
"properties": {
1137+
"packager": {
1138+
"$ref": "#/definitions/propertiesObjects/packager/specification/object"
1139+
},
1140+
"name": {
1141+
"$ref": "#/definitions/propertiesObjects/toolName/specification/object"
1142+
}
1143+
},
1144+
"additionalProperties": false
1145+
}
1146+
}
1147+
]
1148+
}
1149+
},
1150+
"strict": {
1151+
"object": {
1152+
"allOf": [
1153+
{
1154+
"$ref": "#/definitions/propertiesObjects/monitorDependencies/base/object"
1155+
},
1156+
{
1157+
"items": {
1158+
"properties": {
1159+
"packager": {
1160+
"$ref": "#/definitions/propertiesObjects/packager/strict/object"
1161+
},
1162+
"name": {
1163+
"$ref": "#/definitions/propertiesObjects/toolName/strict/object"
1164+
}
1165+
},
1166+
"additionalProperties": false
1167+
}
1168+
}
1169+
]
1170+
}
1171+
}
1172+
},
10871173
"packager": {
10881174
"base": {
10891175
"object": {

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

+33
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,12 @@ var validIndexRaw = []byte(`
7171
"packager": "arduino",
7272
"name": "ble-discovery"
7373
}
74+
],
75+
"monitorDependencies": [
76+
{
77+
"packager": "arduino",
78+
"name": "network-monitor"
79+
}
7480
]
7581
}
7682
],
@@ -152,6 +158,14 @@ func TestMinLength(t *testing.T) {
152158
{"/packages/0/platforms/0/discoveryDependencies/0/name", 1, compliancelevel.Specification},
153159
{"/packages/0/platforms/0/discoveryDependencies/0/name", 1, compliancelevel.Strict},
154160

161+
{"/packages/0/platforms/0/monitorDependencies/0/packager", 1, compliancelevel.Permissive},
162+
{"/packages/0/platforms/0/monitorDependencies/0/packager", 1, compliancelevel.Specification},
163+
{"/packages/0/platforms/0/monitorDependencies/0/packager", 1, compliancelevel.Strict},
164+
165+
{"/packages/0/platforms/0/monitorDependencies/0/name", 1, compliancelevel.Permissive},
166+
{"/packages/0/platforms/0/monitorDependencies/0/name", 1, compliancelevel.Specification},
167+
{"/packages/0/platforms/0/monitorDependencies/0/name", 1, compliancelevel.Strict},
168+
155169
{"/packages/0/tools/0/systems/0/archiveFileName", 1, compliancelevel.Permissive},
156170
{"/packages/0/tools/0/systems/0/archiveFileName", 1, compliancelevel.Specification},
157171
{"/packages/0/tools/0/systems/0/archiveFileName", 1, compliancelevel.Strict},
@@ -303,6 +317,18 @@ func TestRequired(t *testing.T) {
303317
{"/packages/0/platforms/0/discoveryDependencies/0/name", compliancelevel.Specification, assert.True},
304318
{"/packages/0/platforms/0/discoveryDependencies/0/name", compliancelevel.Strict, assert.True},
305319

320+
{"/packages/0/platforms/0/monitorDependencies", compliancelevel.Permissive, assert.False},
321+
{"/packages/0/platforms/0/monitorDependencies", compliancelevel.Specification, assert.False},
322+
{"/packages/0/platforms/0/monitorDependencies", compliancelevel.Strict, assert.False},
323+
324+
{"/packages/0/platforms/0/monitorDependencies/0/packager", compliancelevel.Permissive, assert.True},
325+
{"/packages/0/platforms/0/monitorDependencies/0/packager", compliancelevel.Specification, assert.True},
326+
{"/packages/0/platforms/0/monitorDependencies/0/packager", compliancelevel.Strict, assert.True},
327+
328+
{"/packages/0/platforms/0/monitorDependencies/0/name", compliancelevel.Permissive, assert.True},
329+
{"/packages/0/platforms/0/monitorDependencies/0/name", compliancelevel.Specification, assert.True},
330+
{"/packages/0/platforms/0/monitorDependencies/0/name", compliancelevel.Strict, assert.True},
331+
306332
{"/packages/0/tools/0/name", compliancelevel.Permissive, assert.True},
307333
{"/packages/0/tools/0/name", compliancelevel.Specification, assert.True},
308334
{"/packages/0/tools/0/name", compliancelevel.Strict, assert.True},
@@ -586,6 +612,9 @@ func TestType(t *testing.T) {
586612
{"/packages/0/platforms/0/discoveryDependencies", 42, assert.True},
587613
{"/packages/0/platforms/0/discoveryDependencies/0/packager", 42, assert.True},
588614
{"/packages/0/platforms/0/discoveryDependencies/0/name", 42, assert.True},
615+
{"/packages/0/platforms/0/monitorDependencies", 42, assert.True},
616+
{"/packages/0/platforms/0/monitorDependencies/0/packager", 42, assert.True},
617+
{"/packages/0/platforms/0/monitorDependencies/0/name", 42, assert.True},
589618
{"/packages/0/tools", 42, assert.True},
590619
{"/packages/0/tools/0/name", 42, assert.True},
591620
{"/packages/0/tools/0/version", 42, assert.True},
@@ -717,6 +746,10 @@ func TestAdditionalProperties(t *testing.T) {
717746
{"/packages/0/platforms/0/discoveryDependencies/0", compliancelevel.Specification, assert.True},
718747
{"/packages/0/platforms/0/discoveryDependencies/0", compliancelevel.Strict, assert.True},
719748

749+
{"/packages/0/platforms/0/monitorDependencies/0", compliancelevel.Permissive, assert.True},
750+
{"/packages/0/platforms/0/monitorDependencies/0", compliancelevel.Specification, assert.True},
751+
{"/packages/0/platforms/0/monitorDependencies/0", compliancelevel.Strict, assert.True},
752+
720753
{"/packages/0/tools/0", compliancelevel.Permissive, assert.True},
721754
{"/packages/0/tools/0", compliancelevel.Specification, assert.True},
722755
{"/packages/0/tools/0", compliancelevel.Strict, assert.True},

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

+10-10
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ func InitializeForPackageIndex() {
4646
packageIndexBoards = nil
4747
packageIndexToolsDependencies = nil
4848
packageIndexDiscoveryDependencies = nil
49+
packageIndexMonitorDependencies = nil
4950
packageIndexTools = nil
5051
packageIndexSystems = nil
5152
packageIndexSchemaValidationResult = nil
@@ -54,22 +55,14 @@ func InitializeForPackageIndex() {
5455

5556
for _, packageData := range PackageIndexPackages() {
5657
packageIndexPlatforms = append(packageIndexPlatforms, getPackageIndexData(packageData.Object, packageData.JSONPointer, "platforms", packageData.ID, ":{{index . 0}}@{{index . 1}}", []string{"architecture", "version"})...)
58+
packageIndexTools = append(packageIndexTools, getPackageIndexData(packageData.Object, packageData.JSONPointer, "tools", packageData.ID, ":{{index . 0}}@{{index . 1}}", []string{"name", "version"})...)
5759
}
5860

5961
for _, platformData := range PackageIndexPlatforms() {
6062
packageIndexBoards = append(packageIndexBoards, getPackageIndexData(platformData.Object, platformData.JSONPointer, "boards", platformData.ID, " >> {{index . 0}}", []string{"name"})...)
61-
}
62-
63-
for _, platformData := range PackageIndexPlatforms() {
6463
packageIndexToolsDependencies = append(packageIndexToolsDependencies, getPackageIndexData(platformData.Object, platformData.JSONPointer, "toolsDependencies", platformData.ID, " >> {{index . 0}}:{{index . 1}}@{{index . 2}}", []string{"packager", "name", "version"})...)
65-
}
66-
67-
for _, platformData := range PackageIndexPlatforms() {
6864
packageIndexDiscoveryDependencies = append(packageIndexDiscoveryDependencies, getPackageIndexData(platformData.Object, platformData.JSONPointer, "discoveryDependencies", platformData.ID, " >> {{index . 0}}:{{index . 1}}", []string{"packager", "name"})...)
69-
}
70-
71-
for _, packageData := range PackageIndexPackages() {
72-
packageIndexTools = append(packageIndexTools, getPackageIndexData(packageData.Object, packageData.JSONPointer, "tools", packageData.ID, ":{{index . 0}}@{{index . 1}}", []string{"name", "version"})...)
65+
packageIndexMonitorDependencies = append(packageIndexMonitorDependencies, getPackageIndexData(platformData.Object, platformData.JSONPointer, "monitorDependencies", platformData.ID, " >> {{index . 0}}:{{index . 1}}", []string{"packager", "name"})...)
7366
}
7467

7568
for _, toolData := range PackageIndexTools() {
@@ -136,6 +129,13 @@ func PackageIndexDiscoveryDependencies() []PackageIndexData {
136129
return packageIndexDiscoveryDependencies
137130
}
138131

132+
var packageIndexMonitorDependencies []PackageIndexData
133+
134+
// PackageIndexMonitorDependencies returns the slice of pluggable monitor tool dependency data for the package index.
135+
func PackageIndexMonitorDependencies() []PackageIndexData {
136+
return packageIndexMonitorDependencies
137+
}
138+
139139
var packageIndexTools []PackageIndexData
140140

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

0 commit comments

Comments
 (0)