@@ -27,6 +27,8 @@ import (
27
27
"github.com/pmylund/sortutil"
28
28
"github.com/sirupsen/logrus"
29
29
semver "go.bug.st/relaxed-semver"
30
+ "google.golang.org/grpc/codes"
31
+ "google.golang.org/grpc/status"
30
32
)
31
33
32
34
// LibrariesManager keeps the current status of the libraries in the system
@@ -160,13 +162,14 @@ func (lm *LibrariesManager) AddPlatformReleaseLibrariesDir(plaftormRelease *core
160
162
}
161
163
162
164
// RescanLibraries reload all installed libraries in the system.
163
- func (lm * LibrariesManager ) RescanLibraries () error {
165
+ func (lm * LibrariesManager ) RescanLibraries () []* status.Status {
166
+ statuses := []* status.Status {}
164
167
for _ , dir := range lm .LibrariesDir {
165
- if err := lm .LoadLibrariesFromDir (dir ); err != nil {
166
- return fmt . Errorf ( "loading libs from %s: %s" , dir . Path , err )
168
+ if errs := lm .LoadLibrariesFromDir (dir ); len ( errs ) > 0 {
169
+ statuses = append ( statuses , errs ... )
167
170
}
168
171
}
169
- return nil
172
+ return statuses
170
173
}
171
174
172
175
func (lm * LibrariesManager ) getUserLibrariesDir () * paths.Path {
@@ -180,21 +183,25 @@ func (lm *LibrariesManager) getUserLibrariesDir() *paths.Path {
180
183
181
184
// LoadLibrariesFromDir loads all libraries in the given directory. Returns
182
185
// nil if the directory doesn't exists.
183
- func (lm * LibrariesManager ) LoadLibrariesFromDir (librariesDir * LibrariesDir ) error {
186
+ func (lm * LibrariesManager ) LoadLibrariesFromDir (librariesDir * LibrariesDir ) []* status.Status {
187
+ statuses := []* status.Status {}
184
188
subDirs , err := librariesDir .Path .ReadDir ()
185
189
if os .IsNotExist (err ) {
186
- return nil
190
+ return statuses
187
191
}
188
192
if err != nil {
189
- return fmt .Errorf ("reading dir %s: %s" , librariesDir .Path , err )
193
+ s := status .Newf (codes .FailedPrecondition , "reading dir %s: %s" , librariesDir .Path , err )
194
+ return append (statuses , s )
190
195
}
191
196
subDirs .FilterDirs ()
192
197
subDirs .FilterOutHiddenFiles ()
193
198
194
199
for _ , subDir := range subDirs {
195
200
library , err := libraries .Load (subDir , librariesDir .Location )
196
201
if err != nil {
197
- return fmt .Errorf ("loading library from %s: %s" , subDir , err )
202
+ s := status .Newf (codes .Internal , "loading library from %s: %s" , subDir , err )
203
+ statuses = append (statuses , s )
204
+ continue
198
205
}
199
206
library .ContainerPlatform = librariesDir .PlatformRelease
200
207
alternatives , ok := lm .Libraries [library .Name ]
@@ -204,7 +211,8 @@ func (lm *LibrariesManager) LoadLibrariesFromDir(librariesDir *LibrariesDir) err
204
211
}
205
212
alternatives .Add (library )
206
213
}
207
- return nil
214
+
215
+ return statuses
208
216
}
209
217
210
218
// LoadLibraryFromDir loads one single library from the libRootDir.
0 commit comments