@@ -47,18 +47,19 @@ type indexPackage struct {
47
47
48
48
// indexPlatformRelease represents a single Core Platform from package_index.json file.
49
49
type indexPlatformRelease struct {
50
- Name string `json:"name,required"`
51
- Architecture string `json:"architecture"`
52
- Version * semver.Version `json:"version,required"`
53
- Deprecated bool `json:"deprecated"`
54
- Category string `json:"category"`
55
- URL string `json:"url"`
56
- ArchiveFileName string `json:"archiveFileName,required"`
57
- Checksum string `json:"checksum,required"`
58
- Size json.Number `json:"size,required"`
59
- Boards []indexBoard `json:"boards"`
60
- Help indexHelp `json:"help,omitempty"`
61
- ToolDependencies []indexToolDependency `json:"toolsDependencies,required"`
50
+ Name string `json:"name,required"`
51
+ Architecture string `json:"architecture"`
52
+ Version * semver.Version `json:"version,required"`
53
+ Deprecated bool `json:"deprecated"`
54
+ Category string `json:"category"`
55
+ URL string `json:"url"`
56
+ ArchiveFileName string `json:"archiveFileName,required"`
57
+ Checksum string `json:"checksum,required"`
58
+ Size json.Number `json:"size,required"`
59
+ Boards []indexBoard `json:"boards"`
60
+ Help indexHelp `json:"help,omitempty"`
61
+ ToolDependencies []indexToolDependency `json:"toolsDependencies"`
62
+ DiscoveryDependencies []indexDiscoveryDependency `json:"discoveryDependencies"`
62
63
}
63
64
64
65
// indexToolDependency represents a single dependency of a core from a tool.
@@ -68,6 +69,12 @@ type indexToolDependency struct {
68
69
Version * semver.RelaxedVersion `json:"version,required"`
69
70
}
70
71
72
+ // indexDiscoveryDependency represents a single dependency of a core from a pluggable discovery tool.
73
+ type indexDiscoveryDependency struct {
74
+ Packager string `json:"packager"`
75
+ Name string `json:"name"`
76
+ }
77
+
71
78
// indexToolRelease represents a single Tool from package_index.json file.
72
79
type indexToolRelease struct {
73
80
Name string `json:"name,required"`
@@ -126,14 +133,22 @@ func IndexFromPlatformRelease(pr *cores.PlatformRelease) Index {
126
133
}
127
134
128
135
tools := []indexToolDependency {}
129
- for _ , t := range pr .Dependencies {
136
+ for _ , t := range pr .ToolDependencies {
130
137
tools = append (tools , indexToolDependency {
131
138
Packager : t .ToolPackager ,
132
139
Name : t .ToolName ,
133
140
Version : t .ToolVersion ,
134
141
})
135
142
}
136
143
144
+ discoveries := []indexDiscoveryDependency {}
145
+ for _ , d := range pr .DiscoveryDependencies {
146
+ discoveries = append (discoveries , indexDiscoveryDependency {
147
+ Packager : d .Packager ,
148
+ Name : d .Name ,
149
+ })
150
+ }
151
+
137
152
packageTools := []* indexToolRelease {}
138
153
for name , tool := range pr .Platform .Package .Tools {
139
154
for _ , toolRelease := range tool .Releases {
@@ -165,18 +180,19 @@ func IndexFromPlatformRelease(pr *cores.PlatformRelease) Index {
165
180
URL : pr .Platform .Package .URL ,
166
181
Email : pr .Platform .Package .Email ,
167
182
Platforms : []* indexPlatformRelease {{
168
- Name : pr .Platform .Name ,
169
- Architecture : pr .Platform .Architecture ,
170
- Version : pr .Version ,
171
- Deprecated : pr .Platform .Deprecated ,
172
- Category : pr .Platform .Category ,
173
- URL : pr .Resource .URL ,
174
- ArchiveFileName : pr .Resource .ArchiveFileName ,
175
- Checksum : pr .Resource .Checksum ,
176
- Size : json .Number (fmt .Sprintf ("%d" , pr .Resource .Size )),
177
- Boards : boards ,
178
- Help : indexHelp {Online : pr .Help .Online },
179
- ToolDependencies : tools ,
183
+ Name : pr .Platform .Name ,
184
+ Architecture : pr .Platform .Architecture ,
185
+ Version : pr .Version ,
186
+ Deprecated : pr .Platform .Deprecated ,
187
+ Category : pr .Platform .Category ,
188
+ URL : pr .Resource .URL ,
189
+ ArchiveFileName : pr .Resource .ArchiveFileName ,
190
+ Checksum : pr .Resource .Checksum ,
191
+ Size : json .Number (fmt .Sprintf ("%d" , pr .Resource .Size )),
192
+ Boards : boards ,
193
+ Help : indexHelp {Online : pr .Help .Online },
194
+ ToolDependencies : tools ,
195
+ DiscoveryDependencies : discoveries ,
180
196
}},
181
197
Tools : packageTools ,
182
198
Help : indexHelp {Online : pr .Platform .Package .Help .Online },
@@ -230,24 +246,32 @@ func (inPlatformRelease indexPlatformRelease) extractPlatformIn(outPackage *core
230
246
}
231
247
outPlatformRelease .Help = cores.PlatformReleaseHelp {Online : inPlatformRelease .Help .Online }
232
248
outPlatformRelease .BoardsManifest = inPlatformRelease .extractBoardsManifest ()
233
- if deps , err := inPlatformRelease .extractDeps (); err == nil {
234
- outPlatformRelease .Dependencies = deps
235
- } else {
236
- return fmt .Errorf ("invalid tool dependencies: %s" , err )
237
- }
249
+ outPlatformRelease .ToolDependencies = inPlatformRelease .extractToolDependencies ()
250
+ outPlatformRelease .DiscoveryDependencies = inPlatformRelease .extractDiscoveryDependencies ()
238
251
return nil
239
252
}
240
253
241
- func (inPlatformRelease indexPlatformRelease ) extractDeps () (cores.ToolDependencies , error ) {
242
- ret := make (cores.ToolDependencies , len (inPlatformRelease .ToolDependencies ))
243
- for i , dep := range inPlatformRelease .ToolDependencies {
244
- ret [i ] = & cores.ToolDependency {
245
- ToolName : dep .Name ,
246
- ToolVersion : dep .Version ,
247
- ToolPackager : dep .Packager ,
254
+ func (inPlatformRelease indexPlatformRelease ) extractToolDependencies () cores.ToolDependencies {
255
+ res := make (cores.ToolDependencies , len (inPlatformRelease .ToolDependencies ))
256
+ for i , tool := range inPlatformRelease .ToolDependencies {
257
+ res [i ] = & cores.ToolDependency {
258
+ ToolName : tool .Name ,
259
+ ToolVersion : tool .Version ,
260
+ ToolPackager : tool .Packager ,
261
+ }
262
+ }
263
+ return res
264
+ }
265
+
266
+ func (inPlatformRelease indexPlatformRelease ) extractDiscoveryDependencies () cores.DiscoveryDependencies {
267
+ res := make (cores.DiscoveryDependencies , len (inPlatformRelease .DiscoveryDependencies ))
268
+ for i , discovery := range inPlatformRelease .DiscoveryDependencies {
269
+ res [i ] = & cores.DiscoveryDependency {
270
+ Name : discovery .Name ,
271
+ Packager : discovery .Packager ,
248
272
}
249
273
}
250
- return ret , nil
274
+ return res
251
275
}
252
276
253
277
func (inPlatformRelease indexPlatformRelease ) extractBoardsManifest () []* cores.BoardManifest {
0 commit comments