@@ -151,19 +151,6 @@ func (index Index) MergeIntoPackages(outPackages cores.Packages) {
151
151
// which in turn contains a single indexPlatformRelease converted from the one
152
152
// passed as argument
153
153
func IndexFromPlatformRelease (pr * cores.PlatformRelease ) Index {
154
- boards := []indexBoard {}
155
- for _ , manifest := range pr .BoardsManifest {
156
- board := indexBoard {
157
- Name : manifest .Name ,
158
- }
159
- for _ , id := range manifest .ID {
160
- if id .USB != "" {
161
- board .ID = []indexBoardID {{USB : id .USB }}
162
- }
163
- }
164
- boards = append (boards , board )
165
- }
166
-
167
154
tools := []indexToolDependency {}
168
155
for _ , t := range pr .ToolDependencies {
169
156
tools = append (tools , indexToolDependency {
@@ -189,56 +176,86 @@ func IndexFromPlatformRelease(pr *cores.PlatformRelease) Index {
189
176
})
190
177
}
191
178
192
- packageTools := []* indexToolRelease {}
193
- for name , tool := range pr .Platform .Package .Tools {
194
- for _ , toolRelease := range tool .Releases {
195
- flavours := []indexToolReleaseFlavour {}
196
- for _ , flavour := range toolRelease .Flavors {
197
- flavours = append (flavours , indexToolReleaseFlavour {
198
- OS : flavour .OS ,
199
- URL : flavour .Resource .URL ,
200
- ArchiveFileName : flavour .Resource .ArchiveFileName ,
201
- Size : json .Number (fmt .Sprintf ("%d" , flavour .Resource .Size )),
202
- Checksum : flavour .Resource .Checksum ,
179
+ // Helper functions: those are needed to build an extract of the package_index.json
180
+ // that is compatible with the one used by the CLI.
181
+ // The installed.json is a simplified version of the cores.Packages
182
+ // and therefore we need to extract the relevant information from the
183
+ // cores.PlatformRelease and cores.Package structures.
184
+ extractIndexPackage := func (pack * cores.Package ) * indexPackage {
185
+ packageTools := []* indexToolRelease {}
186
+ for name , tool := range pack .Tools {
187
+ for _ , toolRelease := range tool .Releases {
188
+ flavours := []indexToolReleaseFlavour {}
189
+ for _ , flavour := range toolRelease .Flavors {
190
+ flavours = append (flavours , indexToolReleaseFlavour {
191
+ OS : flavour .OS ,
192
+ URL : flavour .Resource .URL ,
193
+ ArchiveFileName : flavour .Resource .ArchiveFileName ,
194
+ Size : json .Number (fmt .Sprintf ("%d" , flavour .Resource .Size )),
195
+ Checksum : flavour .Resource .Checksum ,
196
+ })
197
+ }
198
+ packageTools = append (packageTools , & indexToolRelease {
199
+ Name : name ,
200
+ Version : toolRelease .Version ,
201
+ Systems : flavours ,
203
202
})
204
203
}
205
- packageTools = append (packageTools , & indexToolRelease {
206
- Name : name ,
207
- Version : toolRelease .Version ,
208
- Systems : flavours ,
209
- })
204
+ }
205
+ return & indexPackage {
206
+ Name : pack .Name ,
207
+ Maintainer : pack .Maintainer ,
208
+ WebsiteURL : pack .WebsiteURL ,
209
+ URL : pack .URL ,
210
+ Email : pack .Email ,
211
+ Platforms : nil ,
212
+ Tools : packageTools ,
213
+ Help : indexHelp {Online : pack .Help .Online },
214
+ }
215
+ }
216
+ extractIndexPlatformRelease := func (pr * cores.PlatformRelease ) * indexPlatformRelease {
217
+ boards := []indexBoard {}
218
+ for _ , manifest := range pr .BoardsManifest {
219
+ board := indexBoard {
220
+ Name : manifest .Name ,
221
+ }
222
+ for _ , id := range manifest .ID {
223
+ if id .USB != "" {
224
+ board .ID = []indexBoardID {{USB : id .USB }}
225
+ }
226
+ }
227
+ boards = append (boards , board )
228
+ }
229
+
230
+ return & indexPlatformRelease {
231
+ Name : pr .Name ,
232
+ Architecture : pr .Platform .Architecture ,
233
+ Version : pr .Version ,
234
+ Deprecated : pr .Deprecated ,
235
+ Category : pr .Category ,
236
+ URL : pr .Resource .URL ,
237
+ ArchiveFileName : pr .Resource .ArchiveFileName ,
238
+ Checksum : pr .Resource .Checksum ,
239
+ Size : json .Number (fmt .Sprintf ("%d" , pr .Resource .Size )),
240
+ Help : indexHelp {Online : pr .Help .Online },
241
+ Boards : boards ,
242
+ ToolDependencies : nil ,
243
+ DiscoveryDependencies : nil ,
244
+ MonitorDependencies : nil ,
210
245
}
211
246
}
212
247
248
+ mainPlatform := extractIndexPlatformRelease (pr )
249
+ mainPlatform .ToolDependencies = tools
250
+ mainPlatform .DiscoveryDependencies = discoveries
251
+ mainPlatform .MonitorDependencies = monitors
252
+
253
+ mainPackage := extractIndexPackage (pr .Platform .Package )
254
+ mainPackage .Platforms = []* indexPlatformRelease {mainPlatform }
255
+
213
256
return Index {
214
257
IsTrusted : pr .IsTrusted ,
215
- Packages : []* indexPackage {
216
- {
217
- Name : pr .Platform .Package .Name ,
218
- Maintainer : pr .Platform .Package .Maintainer ,
219
- WebsiteURL : pr .Platform .Package .WebsiteURL ,
220
- URL : pr .Platform .Package .URL ,
221
- Email : pr .Platform .Package .Email ,
222
- Platforms : []* indexPlatformRelease {{
223
- Name : pr .Name ,
224
- Architecture : pr .Platform .Architecture ,
225
- Version : pr .Version ,
226
- Deprecated : pr .Deprecated ,
227
- Category : pr .Category ,
228
- URL : pr .Resource .URL ,
229
- ArchiveFileName : pr .Resource .ArchiveFileName ,
230
- Checksum : pr .Resource .Checksum ,
231
- Size : json .Number (fmt .Sprintf ("%d" , pr .Resource .Size )),
232
- Boards : boards ,
233
- Help : indexHelp {Online : pr .Help .Online },
234
- ToolDependencies : tools ,
235
- DiscoveryDependencies : discoveries ,
236
- MonitorDependencies : monitors ,
237
- }},
238
- Tools : packageTools ,
239
- Help : indexHelp {Online : pr .Platform .Package .Help .Online },
240
- },
241
- },
258
+ Packages : []* indexPackage {mainPackage },
242
259
}
243
260
}
244
261
0 commit comments