Skip to content

Commit ad98097

Browse files
committed
Fixed regression: 'lib uninstall' must operate only on user dir
1 parent be777ad commit ad98097

File tree

3 files changed

+18
-6
lines changed

3 files changed

+18
-6
lines changed

Diff for: arduino/libraries/librariesmanager/librariesmanager.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,9 @@ func (alts *LibraryAlternatives) Remove(library *libraries.Library) {
7878
}
7979

8080
// FindVersion returns the library mathching the provided version or nil if not found
81-
func (alts *LibraryAlternatives) FindVersion(version *semver.Version) *libraries.Library {
81+
func (alts *LibraryAlternatives) FindVersion(version *semver.Version, installLocation libraries.LibraryLocation) *libraries.Library {
8282
for _, lib := range alts.Alternatives {
83-
if lib.Version.Equal(version) {
83+
if lib.Version.Equal(version) && lib.Location == installLocation {
8484
return lib
8585
}
8686
}
@@ -245,7 +245,7 @@ func (lm *LibrariesManager) LoadLibraryFromDir(libRootDir *paths.Path, location
245245
// FindByReference return the installed library matching the Reference
246246
// name and version or, if the version is nil, the library installed
247247
// in the User folder.
248-
func (lm *LibrariesManager) FindByReference(libRef *librariesindex.Reference) *libraries.Library {
248+
func (lm *LibrariesManager) FindByReference(libRef *librariesindex.Reference, installLocation libraries.LibraryLocation) *libraries.Library {
249249
saneName := utils.SanitizeName(libRef.Name)
250250
alternatives, have := lm.Libraries[saneName]
251251
if !have {
@@ -254,11 +254,11 @@ func (lm *LibrariesManager) FindByReference(libRef *librariesindex.Reference) *l
254254
// TODO: Move "search into user" into another method...
255255
if libRef.Version == nil {
256256
for _, candidate := range alternatives.Alternatives {
257-
if candidate.Location == libraries.User {
257+
if candidate.Location == installLocation {
258258
return candidate
259259
}
260260
}
261261
return nil
262262
}
263-
return alternatives.FindVersion(libRef.Version)
263+
return alternatives.FindVersion(libRef.Version, installLocation)
264264
}

Diff for: commands/lib/uninstall.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"context"
2020

2121
"github.com/arduino/arduino-cli/arduino"
22+
"github.com/arduino/arduino-cli/arduino/libraries"
2223
"github.com/arduino/arduino-cli/commands"
2324
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
2425
)
@@ -31,7 +32,7 @@ func LibraryUninstall(ctx context.Context, req *rpc.LibraryUninstallRequest, tas
3132
return &arduino.InvalidLibraryError{Cause: err}
3233
}
3334

34-
lib := lm.FindByReference(ref)
35+
lib := lm.FindByReference(ref, libraries.User)
3536

3637
if lib == nil {
3738
taskCB(&rpc.TaskProgress{Message: tr("Library %s is not installed", req.Name), Completed: true})

Diff for: docs/UPGRADING.md

+11
Original file line numberDiff line numberDiff line change
@@ -278,16 +278,27 @@ the configuration keys `directories.builtin.libraries` and `directories.builtin.
278278

279279
### go-lang API change in `LibraryManager`
280280

281+
The following methods:
282+
281283
```go
282284
func (lm *LibrariesManager) InstallPrerequisiteCheck(indexLibrary *librariesindex.Release) (*paths.Path, *libraries.Library, error) { ... }
283285
func (lm *LibrariesManager) Install(indexLibrary *librariesindex.Release, libPath *paths.Path) error { ... ]
286+
func (alts *LibraryAlternatives) FindVersion(version *semver.Version, installLocation libraries.LibraryLocation) *libraries.Library { ... }
287+
func (lm *LibrariesManager) FindByReference(libRef *librariesindex.Reference) *libraries.Library { ... }
284288
```
285289
290+
now requires a new parameter `LibraryLocation`:
291+
286292
```go
287293
func (lm *LibrariesManager) InstallPrerequisiteCheck(indexLibrary *librariesindex.Release, installLocation libraries.LibraryLocation) (*paths.Path, *libraries.Library, error) { ... }
288294
func (lm *LibrariesManager) Install(indexLibrary *librariesindex.Release, libPath *paths.Path, installLocation libraries.LibraryLocation) error { ... ]
295+
func (alts *LibraryAlternatives) FindVersion(version *semver.Version, installLocation libraries.LibraryLocation) *libraries.Library { ... }
296+
+func (lm *LibrariesManager) FindByReference(libRef *librariesindex.Reference, installLocation libraries.LibraryLocation) *libraries.Library { ... }
289297
```
290298
299+
If you're not interested in specifying the `LibraryLocation` you can use `libraries.User` to refer to the user
300+
directory.
301+
291302
### go-lang functions changes in `github.com/arduino/arduino-cli/configuration`
292303
293304
- `github.com/arduino/arduino-cli/configuration.IsBundledInDesktopIDE` function has been removed.

0 commit comments

Comments
 (0)