Skip to content

Commit 215b0e7

Browse files
committed
Use enumeration for LibraryLocation field in grpc API
The enumeration is also reused inside the arduino package to reduce duplication.
1 parent bc8e073 commit 215b0e7

File tree

14 files changed

+144
-222
lines changed

14 files changed

+144
-222
lines changed

arduino/libraries/libraries.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ package libraries
1717

1818
import (
1919
"github.com/arduino/arduino-cli/arduino/cores"
20+
rpc "github.com/arduino/arduino-cli/rpc/commands"
2021
paths "github.com/arduino/go-paths-helper"
2122
properties "github.com/arduino/go-properties-orderedmap"
2223
semver "go.bug.st/relaxed-semver"
@@ -58,7 +59,7 @@ type Library struct {
5859
InstallDir *paths.Path
5960
SourceDir *paths.Path
6061
UtilityDir *paths.Path
61-
Location LibraryLocation
62+
Location rpc.LibraryLocation
6263
ContainerPlatform *cores.PlatformRelease `json:""`
6364
Layout LibraryLayout
6465
RealName string

arduino/libraries/libraries_location.go

-84
This file was deleted.

arduino/libraries/librariesmanager/install.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"github.com/arduino/arduino-cli/arduino/libraries"
2323
"github.com/arduino/arduino-cli/arduino/libraries/librariesindex"
2424
"github.com/arduino/arduino-cli/arduino/utils"
25+
rpc "github.com/arduino/arduino-cli/rpc/commands"
2526
paths "github.com/arduino/go-paths-helper"
2627
)
2728

@@ -40,7 +41,7 @@ func (lm *LibrariesManager) InstallPrerequisiteCheck(indexLibrary *librariesinde
4041
var replaced *libraries.Library
4142
if installedLibs, have := lm.Libraries[saneName]; have {
4243
for _, installedLib := range installedLibs.Alternatives {
43-
if installedLib.Location != libraries.User {
44+
if installedLib.Location != rpc.LibraryLocation_user {
4445
continue
4546
}
4647
if installedLib.Version.Equal(indexLibrary.Version) {

arduino/libraries/librariesmanager/librariesmanager.go

+6-5
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"github.com/arduino/arduino-cli/arduino/libraries"
2424
"github.com/arduino/arduino-cli/arduino/libraries/librariesindex"
2525
"github.com/arduino/arduino-cli/arduino/utils"
26+
rpc "github.com/arduino/arduino-cli/rpc/commands"
2627
paths "github.com/arduino/go-paths-helper"
2728
"github.com/pmylund/sortutil"
2829
"github.com/sirupsen/logrus"
@@ -43,7 +44,7 @@ type LibrariesManager struct {
4344
// LibrariesDir is a directory containing libraries
4445
type LibrariesDir struct {
4546
Path *paths.Path
46-
Location libraries.LibraryLocation
47+
Location rpc.LibraryLocation
4748
PlatformRelease *cores.PlatformRelease
4849
}
4950

@@ -122,7 +123,7 @@ func (sc *LibrariesManager) LoadIndex() error {
122123
// AddLibrariesDir adds path to the list of directories
123124
// to scan when searching for libraries. If a path is already
124125
// in the list it is ignored.
125-
func (sc *LibrariesManager) AddLibrariesDir(path *paths.Path, location libraries.LibraryLocation) {
126+
func (sc *LibrariesManager) AddLibrariesDir(path *paths.Path, location rpc.LibraryLocation) {
126127
for _, dir := range sc.LibrariesDir {
127128
if dir.Path.EquivalentTo(path) {
128129
return
@@ -138,7 +139,7 @@ func (sc *LibrariesManager) AddLibrariesDir(path *paths.Path, location libraries
138139
// AddPlatformReleaseLibrariesDir add the libraries directory in the
139140
// specified PlatformRelease to the list of directories to scan when
140141
// searching for libraries.
141-
func (sc *LibrariesManager) AddPlatformReleaseLibrariesDir(plaftormRelease *cores.PlatformRelease, location libraries.LibraryLocation) {
142+
func (sc *LibrariesManager) AddPlatformReleaseLibrariesDir(plaftormRelease *cores.PlatformRelease, location rpc.LibraryLocation) {
142143
path := plaftormRelease.GetLibrariesDir()
143144
if path == nil {
144145
return
@@ -168,7 +169,7 @@ func (sc *LibrariesManager) RescanLibraries() error {
168169

169170
func (sc *LibrariesManager) getUserLibrariesDir() *paths.Path {
170171
for _, dir := range sc.LibrariesDir {
171-
if dir.Location == libraries.User {
172+
if dir.Location == rpc.LibraryLocation_user {
172173
return dir.Path
173174
}
174175
}
@@ -216,7 +217,7 @@ func (sc *LibrariesManager) FindByReference(libRef *librariesindex.Reference) *l
216217
// TODO: Move "search into user" into another method...
217218
if libRef.Version == nil {
218219
for _, candidate := range alternatives.Alternatives {
219-
if candidate.Location == libraries.User {
220+
if candidate.Location == rpc.LibraryLocation_user {
220221
return candidate
221222
}
222223
}

arduino/libraries/librariesresolver/cpp.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"github.com/arduino/arduino-cli/arduino/libraries"
2424
"github.com/arduino/arduino-cli/arduino/libraries/librariesmanager"
2525
"github.com/arduino/arduino-cli/arduino/utils"
26+
rpc "github.com/arduino/arduino-cli/rpc/commands"
2627
"github.com/schollz/closestmatch"
2728
"github.com/sirupsen/logrus"
2829
)
@@ -152,13 +153,13 @@ func computePriority(lib *libraries.Library, header, arch string) int {
152153
}
153154

154155
switch lib.Location {
155-
case libraries.IDEBuiltIn:
156+
case rpc.LibraryLocation_ide_builtin:
156157
priority += 0
157-
case libraries.ReferencedPlatformBuiltIn:
158+
case rpc.LibraryLocation_referenced_platform_builtin:
158159
priority++
159-
case libraries.PlatformBuiltIn:
160+
case rpc.LibraryLocation_platform_builtin:
160161
priority += 2
161-
case libraries.User:
162+
case rpc.LibraryLocation_user:
162163
priority += 3
163164
default:
164165
panic(fmt.Sprintf("Invalid library location: %d", lib.Location))

arduino/libraries/librariesresolver/cpp_test.go

+15-14
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,18 @@ import (
1919
"testing"
2020

2121
"github.com/arduino/arduino-cli/arduino/libraries"
22+
rpc "github.com/arduino/arduino-cli/rpc/commands"
2223
"github.com/stretchr/testify/require"
2324
)
2425

25-
var l1 = &libraries.Library{Name: "Calculus Lib", Location: libraries.User}
26-
var l2 = &libraries.Library{Name: "Calculus Lib-master", Location: libraries.User}
27-
var l3 = &libraries.Library{Name: "Calculus Lib Improved", Location: libraries.User}
28-
var l4 = &libraries.Library{Name: "Another Calculus Lib", Location: libraries.User}
29-
var l5 = &libraries.Library{Name: "Yet Another Calculus Lib Improved", Location: libraries.User}
30-
var l6 = &libraries.Library{Name: "Calculus Unified Lib", Location: libraries.User}
31-
var l7 = &libraries.Library{Name: "AnotherLib", Location: libraries.User}
32-
var bundleServo = &libraries.Library{Name: "Servo", Location: libraries.IDEBuiltIn, Architectures: []string{"avr", "sam", "samd"}}
26+
var l1 = &libraries.Library{Name: "Calculus Lib", Location: rpc.LibraryLocation_user}
27+
var l2 = &libraries.Library{Name: "Calculus Lib-master", Location: rpc.LibraryLocation_user}
28+
var l3 = &libraries.Library{Name: "Calculus Lib Improved", Location: rpc.LibraryLocation_user}
29+
var l4 = &libraries.Library{Name: "Another Calculus Lib", Location: rpc.LibraryLocation_user}
30+
var l5 = &libraries.Library{Name: "Yet Another Calculus Lib Improved", Location: rpc.LibraryLocation_user}
31+
var l6 = &libraries.Library{Name: "Calculus Unified Lib", Location: rpc.LibraryLocation_user}
32+
var l7 = &libraries.Library{Name: "AnotherLib", Location: rpc.LibraryLocation_user}
33+
var bundleServo = &libraries.Library{Name: "Servo", Location: rpc.LibraryLocation_ide_builtin, Architectures: []string{"avr", "sam", "samd"}}
3334

3435
func runResolver(include string, arch string, libs ...*libraries.Library) *libraries.Library {
3536
libraryList := libraries.List{}
@@ -42,19 +43,19 @@ func runResolver(include string, arch string, libs ...*libraries.Library) *libra
4243
func TestArchitecturePriority(t *testing.T) {
4344
userServo := &libraries.Library{
4445
Name: "Servo",
45-
Location: libraries.User,
46+
Location: rpc.LibraryLocation_user,
4647
Architectures: []string{"avr", "sam", "samd"}}
4748
userServoAllArch := &libraries.Library{
4849
Name: "Servo",
49-
Location: libraries.User,
50+
Location: rpc.LibraryLocation_user,
5051
Architectures: []string{"*"}}
5152
userServoNonavr := &libraries.Library{
5253
Name: "Servo",
53-
Location: libraries.User,
54+
Location: rpc.LibraryLocation_user,
5455
Architectures: []string{"sam", "samd"}}
5556
userAnotherServo := &libraries.Library{
5657
Name: "AnotherServo",
57-
Location: libraries.User,
58+
Location: rpc.LibraryLocation_user,
5859
Architectures: []string{"avr", "sam", "samd", "esp32"}}
5960

6061
res := runResolver("Servo.h", "avr", bundleServo, userServo)
@@ -79,11 +80,11 @@ func TestArchitecturePriority(t *testing.T) {
7980

8081
userSDAllArch := &libraries.Library{
8182
Name: "SD",
82-
Location: libraries.User,
83+
Location: rpc.LibraryLocation_user,
8384
Architectures: []string{"*"}}
8485
builtinSDesp := &libraries.Library{
8586
Name: "SD",
86-
Location: libraries.PlatformBuiltIn,
87+
Location: rpc.LibraryLocation_platform_builtin,
8788
Architectures: []string{"esp8266"}}
8889
res = runResolver("SD.h", "esp8266", userSDAllArch, builtinSDesp)
8990
require.Equal(t, builtinSDesp, res, "selected library")

arduino/libraries/loader.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,14 @@ import (
1919
"fmt"
2020
"strings"
2121

22+
rpc "github.com/arduino/arduino-cli/rpc/commands"
2223
"github.com/arduino/go-paths-helper"
2324
properties "github.com/arduino/go-properties-orderedmap"
2425
semver "go.bug.st/relaxed-semver"
2526
)
2627

2728
// Load loads a library from the given LibraryLocation
28-
func Load(libDir *paths.Path, location LibraryLocation) (*Library, error) {
29+
func Load(libDir *paths.Path, location rpc.LibraryLocation) (*Library, error) {
2930
if libDir.Join("library.properties").Exist() {
3031
return makeNewLibrary(libDir, location)
3132
}
@@ -39,7 +40,7 @@ func addUtilityDirectory(library *Library) {
3940
}
4041
}
4142

42-
func makeNewLibrary(libraryDir *paths.Path, location LibraryLocation) (*Library, error) {
43+
func makeNewLibrary(libraryDir *paths.Path, location rpc.LibraryLocation) (*Library, error) {
4344
libProperties, err := properties.Load(libraryDir.Join("library.properties").String())
4445
if err != nil {
4546
return nil, fmt.Errorf("loading library.properties: %s", err)
@@ -110,7 +111,7 @@ func makeNewLibrary(libraryDir *paths.Path, location LibraryLocation) (*Library,
110111
return library, nil
111112
}
112113

113-
func makeLegacyLibrary(path *paths.Path, location LibraryLocation) (*Library, error) {
114+
func makeLegacyLibrary(path *paths.Path, location rpc.LibraryLocation) (*Library, error) {
114115
library := &Library{
115116
InstallDir: path,
116117
Location: location,

cli/lib/list.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,9 @@ func (ir installedResult) String() string {
102102
lastName = name
103103
}
104104

105-
location := lib.GetLocation()
105+
location := lib.GetLocation().String()
106106
if lib.ContainerPlatform != "" {
107-
location = lib.GetContainerPlatform()
107+
location += " " + lib.GetContainerPlatform()
108108
}
109109

110110
if libMeta.GetRelease() != nil {

commands/instances.go

+3-4
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import (
2727
"github.com/arduino/arduino-cli/arduino/cores"
2828
"github.com/arduino/arduino-cli/arduino/cores/packageindex"
2929
"github.com/arduino/arduino-cli/arduino/cores/packagemanager"
30-
"github.com/arduino/arduino-cli/arduino/libraries"
3130
"github.com/arduino/arduino-cli/arduino/libraries/librariesmanager"
3231
"github.com/arduino/arduino-cli/cli/globals"
3332
"github.com/arduino/arduino-cli/configuration"
@@ -323,19 +322,19 @@ func createInstance(ctx context.Context, getLibOnly bool) (*createInstanceResult
323322

324323
// Add IDE builtin libraries dir
325324
if bundledLibsDir := configuration.IDEBundledLibrariesDir(); bundledLibsDir != nil {
326-
res.Lm.AddLibrariesDir(bundledLibsDir, libraries.IDEBuiltIn)
325+
res.Lm.AddLibrariesDir(bundledLibsDir, rpc.LibraryLocation_ide_builtin)
327326
}
328327

329328
// Add user libraries dir
330329
libDir := configuration.LibrariesDir()
331-
res.Lm.AddLibrariesDir(libDir, libraries.User)
330+
res.Lm.AddLibrariesDir(libDir, rpc.LibraryLocation_user)
332331

333332
// Add libraries dirs from installed platforms
334333
if res.Pm != nil {
335334
for _, targetPackage := range res.Pm.Packages {
336335
for _, platform := range targetPackage.Platforms {
337336
if platformRelease := res.Pm.GetInstalledPlatformRelease(platform); platformRelease != nil {
338-
res.Lm.AddPlatformReleaseLibrariesDir(platformRelease, libraries.PlatformBuiltIn)
337+
res.Lm.AddPlatformReleaseLibrariesDir(platformRelease, rpc.LibraryLocation_platform_builtin)
339338
}
340339
}
341340
}

commands/lib/list.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func listLibraries(lm *librariesmanager.LibrariesManager, updatable bool, all bo
5858
for _, libAlternatives := range lm.Libraries {
5959
for _, lib := range libAlternatives.Alternatives {
6060
if !all {
61-
if lib.Location != libraries.User {
61+
if lib.Location != rpc.LibraryLocation_user {
6262
continue
6363
}
6464
}
@@ -107,7 +107,7 @@ func GetOutputLibrary(lib *libraries.Library) *rpc.Library {
107107
InstallDir: insdir,
108108
SourceDir: srcdir,
109109
UtilityDir: utldir,
110-
Location: lib.Location.String(),
110+
Location: lib.Location,
111111
ContainerPlatform: cntplat,
112112
Layout: lib.Layout.String(),
113113
RealName: lib.RealName,

go.sum

+1
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3
184184
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
185185
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384 h1:TFlARGu6Czu1z7q93HTxcP1P+/ZFC/IKythI5RzrnRg=
186186
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
187+
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135 h1:5Beo0mZN8dRzgrMMkDp0jc8YXQKx9DiJ2k1dkvGsn5A=
187188
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
188189
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
189190
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=

0 commit comments

Comments
 (0)