Skip to content

Use enumeration for LibraryLocation and LibraryLayout fields in grpc API #585

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

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
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
7 changes: 4 additions & 3 deletions arduino/libraries/libraries.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ package libraries

import (
"github.com/arduino/arduino-cli/arduino/cores"
rpc "github.com/arduino/arduino-cli/rpc/commands"
paths "github.com/arduino/go-paths-helper"
properties "github.com/arduino/go-properties-orderedmap"
semver "go.bug.st/relaxed-semver"
Expand Down Expand Up @@ -58,9 +59,9 @@ type Library struct {
InstallDir *paths.Path
SourceDir *paths.Path
UtilityDir *paths.Path
Location LibraryLocation
Location rpc.LibraryLocation
ContainerPlatform *cores.PlatformRelease `json:""`
Layout LibraryLayout
Layout rpc.LibraryLayout
RealName string
DotALinkage bool
Precompiled bool
Expand Down Expand Up @@ -125,7 +126,7 @@ func (library *Library) SourceDirs() []SourceDir {
dirs = append(dirs,
SourceDir{
Dir: library.SourceDir,
Recurse: library.Layout == RecursiveLayout,
Recurse: library.Layout == rpc.LibraryLayout_recursive_layout,
})
if library.UtilityDir != nil {
dirs = append(dirs,
Expand Down
67 changes: 0 additions & 67 deletions arduino/libraries/libraries_layout.go

This file was deleted.

84 changes: 0 additions & 84 deletions arduino/libraries/libraries_location.go

This file was deleted.

3 changes: 2 additions & 1 deletion arduino/libraries/librariesmanager/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
"github.com/arduino/arduino-cli/arduino/libraries"
"github.com/arduino/arduino-cli/arduino/libraries/librariesindex"
"github.com/arduino/arduino-cli/arduino/utils"
rpc "github.com/arduino/arduino-cli/rpc/commands"
paths "github.com/arduino/go-paths-helper"
)

Expand All @@ -40,7 +41,7 @@ func (lm *LibrariesManager) InstallPrerequisiteCheck(indexLibrary *librariesinde
var replaced *libraries.Library
if installedLibs, have := lm.Libraries[saneName]; have {
for _, installedLib := range installedLibs.Alternatives {
if installedLib.Location != libraries.User {
if installedLib.Location != rpc.LibraryLocation_user {
continue
}
if installedLib.Version.Equal(indexLibrary.Version) {
Expand Down
11 changes: 6 additions & 5 deletions arduino/libraries/librariesmanager/librariesmanager.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import (
"github.com/arduino/arduino-cli/arduino/libraries"
"github.com/arduino/arduino-cli/arduino/libraries/librariesindex"
"github.com/arduino/arduino-cli/arduino/utils"
rpc "github.com/arduino/arduino-cli/rpc/commands"
paths "github.com/arduino/go-paths-helper"
"github.com/pmylund/sortutil"
"github.com/sirupsen/logrus"
Expand All @@ -43,7 +44,7 @@ type LibrariesManager struct {
// LibrariesDir is a directory containing libraries
type LibrariesDir struct {
Path *paths.Path
Location libraries.LibraryLocation
Location rpc.LibraryLocation
PlatformRelease *cores.PlatformRelease
}

Expand Down Expand Up @@ -122,7 +123,7 @@ func (sc *LibrariesManager) LoadIndex() error {
// AddLibrariesDir adds path to the list of directories
// to scan when searching for libraries. If a path is already
// in the list it is ignored.
func (sc *LibrariesManager) AddLibrariesDir(path *paths.Path, location libraries.LibraryLocation) {
func (sc *LibrariesManager) AddLibrariesDir(path *paths.Path, location rpc.LibraryLocation) {
for _, dir := range sc.LibrariesDir {
if dir.Path.EquivalentTo(path) {
return
Expand All @@ -138,7 +139,7 @@ func (sc *LibrariesManager) AddLibrariesDir(path *paths.Path, location libraries
// AddPlatformReleaseLibrariesDir add the libraries directory in the
// specified PlatformRelease to the list of directories to scan when
// searching for libraries.
func (sc *LibrariesManager) AddPlatformReleaseLibrariesDir(plaftormRelease *cores.PlatformRelease, location libraries.LibraryLocation) {
func (sc *LibrariesManager) AddPlatformReleaseLibrariesDir(plaftormRelease *cores.PlatformRelease, location rpc.LibraryLocation) {
path := plaftormRelease.GetLibrariesDir()
if path == nil {
return
Expand Down Expand Up @@ -168,7 +169,7 @@ func (sc *LibrariesManager) RescanLibraries() error {

func (sc *LibrariesManager) getUserLibrariesDir() *paths.Path {
for _, dir := range sc.LibrariesDir {
if dir.Location == libraries.User {
if dir.Location == rpc.LibraryLocation_user {
return dir.Path
}
}
Expand Down Expand Up @@ -216,7 +217,7 @@ func (sc *LibrariesManager) FindByReference(libRef *librariesindex.Reference) *l
// TODO: Move "search into user" into another method...
if libRef.Version == nil {
for _, candidate := range alternatives.Alternatives {
if candidate.Location == libraries.User {
if candidate.Location == rpc.LibraryLocation_user {
return candidate
}
}
Expand Down
9 changes: 5 additions & 4 deletions arduino/libraries/librariesresolver/cpp.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import (
"github.com/arduino/arduino-cli/arduino/libraries"
"github.com/arduino/arduino-cli/arduino/libraries/librariesmanager"
"github.com/arduino/arduino-cli/arduino/utils"
rpc "github.com/arduino/arduino-cli/rpc/commands"
"github.com/schollz/closestmatch"
"github.com/sirupsen/logrus"
)
Expand Down Expand Up @@ -152,13 +153,13 @@ func computePriority(lib *libraries.Library, header, arch string) int {
}

switch lib.Location {
case libraries.IDEBuiltIn:
case rpc.LibraryLocation_ide_builtin:
priority += 0
case libraries.ReferencedPlatformBuiltIn:
case rpc.LibraryLocation_referenced_platform_builtin:
priority++
case libraries.PlatformBuiltIn:
case rpc.LibraryLocation_platform_builtin:
priority += 2
case libraries.User:
case rpc.LibraryLocation_user:
priority += 3
default:
panic(fmt.Sprintf("Invalid library location: %d", lib.Location))
Expand Down
29 changes: 15 additions & 14 deletions arduino/libraries/librariesresolver/cpp_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,18 @@ import (
"testing"

"github.com/arduino/arduino-cli/arduino/libraries"
rpc "github.com/arduino/arduino-cli/rpc/commands"
"github.com/stretchr/testify/require"
)

var l1 = &libraries.Library{Name: "Calculus Lib", Location: libraries.User}
var l2 = &libraries.Library{Name: "Calculus Lib-master", Location: libraries.User}
var l3 = &libraries.Library{Name: "Calculus Lib Improved", Location: libraries.User}
var l4 = &libraries.Library{Name: "Another Calculus Lib", Location: libraries.User}
var l5 = &libraries.Library{Name: "Yet Another Calculus Lib Improved", Location: libraries.User}
var l6 = &libraries.Library{Name: "Calculus Unified Lib", Location: libraries.User}
var l7 = &libraries.Library{Name: "AnotherLib", Location: libraries.User}
var bundleServo = &libraries.Library{Name: "Servo", Location: libraries.IDEBuiltIn, Architectures: []string{"avr", "sam", "samd"}}
var l1 = &libraries.Library{Name: "Calculus Lib", Location: rpc.LibraryLocation_user}
var l2 = &libraries.Library{Name: "Calculus Lib-master", Location: rpc.LibraryLocation_user}
var l3 = &libraries.Library{Name: "Calculus Lib Improved", Location: rpc.LibraryLocation_user}
var l4 = &libraries.Library{Name: "Another Calculus Lib", Location: rpc.LibraryLocation_user}
var l5 = &libraries.Library{Name: "Yet Another Calculus Lib Improved", Location: rpc.LibraryLocation_user}
var l6 = &libraries.Library{Name: "Calculus Unified Lib", Location: rpc.LibraryLocation_user}
var l7 = &libraries.Library{Name: "AnotherLib", Location: rpc.LibraryLocation_user}
var bundleServo = &libraries.Library{Name: "Servo", Location: rpc.LibraryLocation_ide_builtin, Architectures: []string{"avr", "sam", "samd"}}

func runResolver(include string, arch string, libs ...*libraries.Library) *libraries.Library {
libraryList := libraries.List{}
Expand All @@ -42,19 +43,19 @@ func runResolver(include string, arch string, libs ...*libraries.Library) *libra
func TestArchitecturePriority(t *testing.T) {
userServo := &libraries.Library{
Name: "Servo",
Location: libraries.User,
Location: rpc.LibraryLocation_user,
Architectures: []string{"avr", "sam", "samd"}}
userServoAllArch := &libraries.Library{
Name: "Servo",
Location: libraries.User,
Location: rpc.LibraryLocation_user,
Architectures: []string{"*"}}
userServoNonavr := &libraries.Library{
Name: "Servo",
Location: libraries.User,
Location: rpc.LibraryLocation_user,
Architectures: []string{"sam", "samd"}}
userAnotherServo := &libraries.Library{
Name: "AnotherServo",
Location: libraries.User,
Location: rpc.LibraryLocation_user,
Architectures: []string{"avr", "sam", "samd", "esp32"}}

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

userSDAllArch := &libraries.Library{
Name: "SD",
Location: libraries.User,
Location: rpc.LibraryLocation_user,
Architectures: []string{"*"}}
builtinSDesp := &libraries.Library{
Name: "SD",
Location: libraries.PlatformBuiltIn,
Location: rpc.LibraryLocation_platform_builtin,
Architectures: []string{"esp8266"}}
res = runResolver("SD.h", "esp8266", userSDAllArch, builtinSDesp)
require.Equal(t, builtinSDesp, res, "selected library")
Expand Down
13 changes: 7 additions & 6 deletions arduino/libraries/loader.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,14 @@ import (
"fmt"
"strings"

rpc "github.com/arduino/arduino-cli/rpc/commands"
"github.com/arduino/go-paths-helper"
properties "github.com/arduino/go-properties-orderedmap"
semver "go.bug.st/relaxed-semver"
)

// Load loads a library from the given LibraryLocation
func Load(libDir *paths.Path, location LibraryLocation) (*Library, error) {
func Load(libDir *paths.Path, location rpc.LibraryLocation) (*Library, error) {
if libDir.Join("library.properties").Exist() {
return makeNewLibrary(libDir, location)
}
Expand All @@ -39,7 +40,7 @@ func addUtilityDirectory(library *Library) {
}
}

func makeNewLibrary(libraryDir *paths.Path, location LibraryLocation) (*Library, error) {
func makeNewLibrary(libraryDir *paths.Path, location rpc.LibraryLocation) (*Library, error) {
libProperties, err := properties.Load(libraryDir.Join("library.properties").String())
if err != nil {
return nil, fmt.Errorf("loading library.properties: %s", err)
Expand All @@ -59,10 +60,10 @@ func makeNewLibrary(libraryDir *paths.Path, location LibraryLocation) (*Library,
library.Location = location
library.InstallDir = libraryDir
if libraryDir.Join("src").Exist() {
library.Layout = RecursiveLayout
library.Layout = rpc.LibraryLayout_recursive_layout
library.SourceDir = libraryDir.Join("src")
} else {
library.Layout = FlatLayout
library.Layout = rpc.LibraryLayout_flat_layout
library.SourceDir = libraryDir
addUtilityDirectory(library)
}
Expand Down Expand Up @@ -110,12 +111,12 @@ func makeNewLibrary(libraryDir *paths.Path, location LibraryLocation) (*Library,
return library, nil
}

func makeLegacyLibrary(path *paths.Path, location LibraryLocation) (*Library, error) {
func makeLegacyLibrary(path *paths.Path, location rpc.LibraryLocation) (*Library, error) {
library := &Library{
InstallDir: path,
Location: location,
SourceDir: path,
Layout: FlatLayout,
Layout: rpc.LibraryLayout_flat_layout,
Name: path.Base(),
Architectures: []string{"*"},
IsLegacy: true,
Expand Down
Loading