@@ -47,18 +47,19 @@ type indexPackage struct {
4747
4848// indexPlatformRelease represents a single Core Platform from package_index.json file.
4949type 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"`
6263}
6364
6465// indexToolDependency represents a single dependency of a core from a tool.
@@ -68,6 +69,12 @@ type indexToolDependency struct {
6869 Version * semver.RelaxedVersion `json:"version,required"`
6970}
7071
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+
7178// indexToolRelease represents a single Tool from package_index.json file.
7279type indexToolRelease struct {
7380 Name string `json:"name,required"`
@@ -126,14 +133,22 @@ func IndexFromPlatformRelease(pr *cores.PlatformRelease) Index {
126133 }
127134
128135 tools := []indexToolDependency {}
129- for _ , t := range pr .Dependencies {
136+ for _ , t := range pr .ToolDependencies {
130137 tools = append (tools , indexToolDependency {
131138 Packager : t .ToolPackager ,
132139 Name : t .ToolName ,
133140 Version : t .ToolVersion ,
134141 })
135142 }
136143
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+
137152 packageTools := []* indexToolRelease {}
138153 for name , tool := range pr .Platform .Package .Tools {
139154 for _ , toolRelease := range tool .Releases {
@@ -165,18 +180,19 @@ func IndexFromPlatformRelease(pr *cores.PlatformRelease) Index {
165180 URL : pr .Platform .Package .URL ,
166181 Email : pr .Platform .Package .Email ,
167182 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 ,
180196 }},
181197 Tools : packageTools ,
182198 Help : indexHelp {Online : pr .Platform .Package .Help .Online },
@@ -230,24 +246,32 @@ func (inPlatformRelease indexPlatformRelease) extractPlatformIn(outPackage *core
230246 }
231247 outPlatformRelease .Help = cores.PlatformReleaseHelp {Online : inPlatformRelease .Help .Online }
232248 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 ()
238251 return nil
239252}
240253
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 ,
248272 }
249273 }
250- return ret , nil
274+ return res
251275}
252276
253277func (inPlatformRelease indexPlatformRelease ) extractBoardsManifest () []* cores.BoardManifest {
0 commit comments