Skip to content

Commit 928e534

Browse files
committed
Added function PlatformRelease.RequiresToolRelease
This function will be usefult for cleanup during uninstall
1 parent 50ebe37 commit 928e534

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

arduino/cores/cores.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,19 @@ func (release *PlatformRelease) GetOrCreateBoard(boardID string) *Board {
184184
return board
185185
}
186186

187+
// RequiresToolRelease returns true if the PlatformRelease requires the
188+
// toolReleased passed as parameter
189+
func (release *PlatformRelease) RequiresToolRelease(toolRelease *ToolRelease) bool {
190+
for _, toolDep := range release.Dependencies {
191+
if toolDep.ToolName == toolRelease.Tool.Name &&
192+
toolDep.ToolPackager == toolRelease.Tool.Package.Name &&
193+
toolDep.ToolVersion == toolRelease.Version {
194+
return true
195+
}
196+
}
197+
return false
198+
}
199+
187200
// RuntimeProperties returns the runtime properties for this PlatformRelease
188201
func (release *PlatformRelease) RuntimeProperties() properties.Map {
189202
return properties.Map{

arduino/cores/packagemanager/install_uninstall.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,19 @@ func (pm *PackageManager) InstallTool(toolRelease *cores.ToolRelease) error {
4646
toolRelease.Version.String())
4747
return toolResource.Install(pm.DownloadDir, pm.TempDir, destDir)
4848
}
49+
50+
// IsToolRequired returns true if any of the installed platforms requires the toolRelease
51+
// passed as parameter
52+
func (pm *PackageManager) IsToolRequired(toolRelease *cores.ToolRelease) bool {
53+
// Search in all installed platforms
54+
for _, targetPackage := range pm.packages.Packages {
55+
for _, platform := range targetPackage.Platforms {
56+
if platformRelease := platform.GetInstalled(); platformRelease != nil {
57+
if platformRelease.RequiresToolRelease(toolRelease) {
58+
return true
59+
}
60+
}
61+
}
62+
}
63+
return false
64+
}

0 commit comments

Comments
 (0)