From 6810eafd27d6d359c749f99868294bf29bd1b745 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Mon, 5 Jul 2021 10:46:07 +0200 Subject: [PATCH 1/3] Added a couple of utility functions --- .../cores/packagemanager/package_manager.go | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/arduino/cores/packagemanager/package_manager.go b/arduino/cores/packagemanager/package_manager.go index 8f77d74c953..748b55a167f 100644 --- a/arduino/cores/packagemanager/package_manager.go +++ b/arduino/cores/packagemanager/package_manager.go @@ -429,6 +429,21 @@ func (pm *PackageManager) InstalledBoards() []*cores.Board { return boards } +// GetTool search for tool in all packages and platforms. +func (pm *PackageManager) GetTool(toolId string) *cores.Tool { + split := strings.Split(toolId, ":") + if len(split) != 2 { + return nil + } + if pack, ok := pm.Packages[split[0]]; !ok { + return nil + } else if tool, ok := pack.Tools[split[1]]; !ok { + return nil + } else { + return tool + } +} + // FindToolsRequiredForBoard FIXMEDOC func (pm *PackageManager) FindToolsRequiredForBoard(board *cores.Board) ([]*cores.ToolRelease, error) { pm.Log.Infof("Searching tools required for board %s", board) @@ -478,3 +493,15 @@ func (pm *PackageManager) FindToolDependency(dep *cores.ToolDependency) *cores.T } return toolRelease } + +// FindDiscoveryDependency returns the ToolRelease referenced by the DiscoveryDepenency or nil if +// the referenced discovery doesn't exists. +func (pm *PackageManager) FindDiscoveryDependency(discovery *cores.DiscoveryDependency) *cores.ToolRelease { + if pack := pm.Packages[discovery.Packager]; pack == nil { + return nil + } else if toolRelease := pack.Tools[discovery.Name]; toolRelease == nil { + return nil + } else { + return toolRelease.GetLatestInstalled() + } +} From 18f58508648d76322cdf9c4d7dcb9c5c07e11a8a Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Mon, 5 Jul 2021 10:57:10 +0200 Subject: [PATCH 2/3] Update arduino/cores/packagemanager/package_manager.go Co-authored-by: per1234 --- arduino/cores/packagemanager/package_manager.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arduino/cores/packagemanager/package_manager.go b/arduino/cores/packagemanager/package_manager.go index 748b55a167f..fa7fb963580 100644 --- a/arduino/cores/packagemanager/package_manager.go +++ b/arduino/cores/packagemanager/package_manager.go @@ -429,7 +429,7 @@ func (pm *PackageManager) InstalledBoards() []*cores.Board { return boards } -// GetTool search for tool in all packages and platforms. +// GetTool searches for tool in all packages and platforms. func (pm *PackageManager) GetTool(toolId string) *cores.Tool { split := strings.Split(toolId, ":") if len(split) != 2 { From 54fc6b7a4d7eb3bbbea4cf9e6a525cfce770b269 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Mon, 5 Jul 2021 11:11:32 +0200 Subject: [PATCH 3/3] Make linter happy --- arduino/cores/packagemanager/package_manager.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arduino/cores/packagemanager/package_manager.go b/arduino/cores/packagemanager/package_manager.go index fa7fb963580..cdbe2110c67 100644 --- a/arduino/cores/packagemanager/package_manager.go +++ b/arduino/cores/packagemanager/package_manager.go @@ -430,8 +430,8 @@ func (pm *PackageManager) InstalledBoards() []*cores.Board { } // GetTool searches for tool in all packages and platforms. -func (pm *PackageManager) GetTool(toolId string) *cores.Tool { - split := strings.Split(toolId, ":") +func (pm *PackageManager) GetTool(toolID string) *cores.Tool { + split := strings.Split(toolID, ":") if len(split) != 2 { return nil }