Skip to content

Commit 97842a8

Browse files
cmaglieper1234
andauthored
Added a couple of utility functions in packagemanager (#1348)
* Added a couple of utility functions * Update arduino/cores/packagemanager/package_manager.go Co-authored-by: per1234 <[email protected]> * Make linter happy Co-authored-by: per1234 <[email protected]>
1 parent 5159f45 commit 97842a8

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

arduino/cores/packagemanager/package_manager.go

+27
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,21 @@ func (pm *PackageManager) InstalledBoards() []*cores.Board {
429429
return boards
430430
}
431431

432+
// GetTool searches for tool in all packages and platforms.
433+
func (pm *PackageManager) GetTool(toolID string) *cores.Tool {
434+
split := strings.Split(toolID, ":")
435+
if len(split) != 2 {
436+
return nil
437+
}
438+
if pack, ok := pm.Packages[split[0]]; !ok {
439+
return nil
440+
} else if tool, ok := pack.Tools[split[1]]; !ok {
441+
return nil
442+
} else {
443+
return tool
444+
}
445+
}
446+
432447
// FindToolsRequiredForBoard FIXMEDOC
433448
func (pm *PackageManager) FindToolsRequiredForBoard(board *cores.Board) ([]*cores.ToolRelease, error) {
434449
pm.Log.Infof("Searching tools required for board %s", board)
@@ -478,3 +493,15 @@ func (pm *PackageManager) FindToolDependency(dep *cores.ToolDependency) *cores.T
478493
}
479494
return toolRelease
480495
}
496+
497+
// FindDiscoveryDependency returns the ToolRelease referenced by the DiscoveryDepenency or nil if
498+
// the referenced discovery doesn't exists.
499+
func (pm *PackageManager) FindDiscoveryDependency(discovery *cores.DiscoveryDependency) *cores.ToolRelease {
500+
if pack := pm.Packages[discovery.Packager]; pack == nil {
501+
return nil
502+
} else if toolRelease := pack.Tools[discovery.Name]; toolRelease == nil {
503+
return nil
504+
} else {
505+
return toolRelease.GetLatestInstalled()
506+
}
507+
}

0 commit comments

Comments
 (0)