Skip to content

[breaking] Downloaders/Installers refactor #1809

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 15 commits into from
Aug 8, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Moved uninstallToolRelease into the proper packagamanger method
  • Loading branch information
cmaglie committed Aug 5, 2022
commit fb6a0af185c37a841897c7cfeb72157310847634
17 changes: 14 additions & 3 deletions arduino/cores/packagemanager/install_uninstall.go
Original file line number Diff line number Diff line change
Expand Up @@ -182,20 +182,31 @@ func (pm *PackageManager) IsManagedToolRelease(toolRelease *cores.ToolRelease) b
}

// UninstallTool remove a ToolRelease.
func (pm *PackageManager) UninstallTool(toolRelease *cores.ToolRelease) error {
func (pm *PackageManager) UninstallTool(toolRelease *cores.ToolRelease, taskCB rpc.TaskProgressCB) error {
log := pm.Log.WithField("Tool", toolRelease)
log.Info("Uninstalling tool")

if toolRelease.InstallDir == nil {
return fmt.Errorf(tr("tool not installed"))
}

// Safety measure
if !pm.IsManagedToolRelease(toolRelease) {
return fmt.Errorf(tr("tool %s is not managed by package manager"), toolRelease)
err := &arduino.FailedUninstallError{Message: tr("tool %s is not managed by package manager", toolRelease)}
log.WithError(err).Error("Error uninstalling")
return err
}

if err := toolRelease.InstallDir.RemoveAll(); err != nil {
return fmt.Errorf(tr("removing tool files: %s"), err)
err = &arduino.FailedUninstallError{Message: err.Error()}
log.WithError(err).Error("Error uninstalling")
return err
}

toolRelease.InstallDir = nil

log.Info("Tool uninstalled")
taskCB(&rpc.TaskProgress{Message: tr("Tool %s uninstalled", toolRelease), Completed: true})
return nil
}

Expand Down
3 changes: 2 additions & 1 deletion commands/core/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -163,8 +163,9 @@ func installPlatform(pm *packagemanager.PackageManager,

// Uninstall unused tools
for _, tool := range installedTools {
taskCB(&rpc.TaskProgress{Name: tr("Uninstalling %s, tool is no more required", tool)})
if !pm.IsToolRequired(tool) {
uninstallToolRelease(pm, tool, taskCB)
pm.UninstallTool(tool, taskCB)
}
}

Expand Down
19 changes: 2 additions & 17 deletions commands/core/uninstall.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,8 @@ func PlatformUninstall(ctx context.Context, req *rpc.PlatformUninstallRequest, t

for _, tool := range tools {
if !pm.IsToolRequired(tool) {
uninstallToolRelease(pm, tool, taskCB)
taskCB(&rpc.TaskProgress{Name: tr("Uninstalling %s, tool is no more required", tool)})
pm.UninstallTool(tool, taskCB)
}
}

Expand All @@ -85,19 +86,3 @@ func uninstallPlatformRelease(pm *packagemanager.PackageManager, platformRelease
taskCB(&rpc.TaskProgress{Message: tr("Platform %s uninstalled", platformRelease), Completed: true})
return nil
}

func uninstallToolRelease(pm *packagemanager.PackageManager, toolRelease *cores.ToolRelease, taskCB rpc.TaskProgressCB) error {
log := pm.Log.WithField("Tool", toolRelease)

log.Info("Uninstalling tool")
taskCB(&rpc.TaskProgress{Name: tr("Uninstalling %s, tool is no more required", toolRelease)})

if err := pm.UninstallTool(toolRelease); err != nil {
log.WithError(err).Error("Error uninstalling")
return &arduino.FailedUninstallError{Message: tr("Error uninstalling tool %s", toolRelease), Cause: err}
}

log.Info("Tool uninstalled")
taskCB(&rpc.TaskProgress{Message: tr("Tool %s uninstalled", toolRelease), Completed: true})
return nil
}
3 changes: 1 addition & 2 deletions commands/instances.go
Original file line number Diff line number Diff line change
Expand Up @@ -796,8 +796,7 @@ func Upgrade(ctx context.Context, req *rpc.UpgradeRequest, downloadCB rpc.Downlo

log.Info("Uninstalling tool")
taskCB(&rpc.TaskProgress{Name: tr("Uninstalling %s: tool is no more required", toolRelease)})

if err := pm.UninstallTool(toolRelease); err != nil {
if err := pm.UninstallTool(toolRelease, taskCB); err != nil {
log.WithError(err).Error("Error uninstalling")
return &arduino.FailedInstallError{Message: tr("Error uninstalling tool %s", toolRelease), Cause: err}
}
Expand Down