Skip to content

Commit

Permalink
AddLibrariesDir now can handle also single-lib directories
Browse files Browse the repository at this point in the history
  • Loading branch information
cmaglie committed Dec 22, 2023
1 parent debf8e4 commit 17cbf4f
Showing 1 changed file with 22 additions and 13 deletions.
35 changes: 22 additions & 13 deletions internal/arduino/libraries/librariesmanager/librariesmanager.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ type LibrariesDir struct {
Path *paths.Path
Location libraries.LibraryLocation
PlatformRelease *cores.PlatformRelease
IsSingleLibrary bool // true if Path points directly to a library instad of a dir of libraries
}

var tr = i18n.Tr
Expand Down Expand Up @@ -113,6 +114,7 @@ func (lm *LibrariesManager) AddLibrariesDir(libDir *LibrariesDir) {
}
logrus.WithField("dir", libDir.Path).
WithField("location", libDir.Location.String()).
WithField("isSingleLibrary", libDir.IsSingleLibrary).
Info("Adding libraries dir")
lm.LibrariesDir = append(lm.LibrariesDir, libDir)
}
Expand All @@ -122,7 +124,7 @@ func (lm *LibrariesManager) RescanLibraries() []*status.Status {
lm.clearLibraries()
statuses := []*status.Status{}
for _, dir := range lm.LibrariesDir {
if errs := lm.LoadLibrariesFromDir(dir); len(errs) > 0 {
if errs := lm.loadLibrariesFromDir(dir); len(errs) > 0 {
statuses = append(statuses, errs...)
}
}
Expand All @@ -145,22 +147,29 @@ func (lm *LibrariesManager) getLibrariesDir(installLocation libraries.LibraryLoc
}
}

// LoadLibrariesFromDir loads all libraries in the given directory. Returns
// loadLibrariesFromDir loads all libraries in the given directory. Returns
// nil if the directory doesn't exists.
func (lm *LibrariesManager) LoadLibrariesFromDir(librariesDir *LibrariesDir) []*status.Status {
func (lm *LibrariesManager) loadLibrariesFromDir(librariesDir *LibrariesDir) []*status.Status {
statuses := []*status.Status{}
subDirs, err := librariesDir.Path.ReadDir()
if os.IsNotExist(err) {
return statuses
}
if err != nil {
s := status.Newf(codes.FailedPrecondition, tr("reading dir %[1]s: %[2]s"), librariesDir.Path, err)
return append(statuses, s)

var libDirs paths.PathList
if librariesDir.IsSingleLibrary {
libDirs.Add(librariesDir.Path)
} else {
d, err := librariesDir.Path.ReadDir()
if os.IsNotExist(err) {
return statuses
}
if err != nil {
s := status.Newf(codes.FailedPrecondition, tr("reading dir %[1]s: %[2]s"), librariesDir.Path, err)
return append(statuses, s)
}
d.FilterDirs()
d.FilterOutHiddenFiles()
libDirs = d
}
subDirs.FilterDirs()
subDirs.FilterOutHiddenFiles()

for _, subDir := range subDirs {
for _, subDir := range libDirs {
library, err := libraries.Load(subDir, librariesDir.Location)
if err != nil {
s := status.Newf(codes.Internal, tr("loading library from %[1]s: %[2]s"), subDir, err)
Expand Down

0 comments on commit 17cbf4f

Please sign in to comment.