@@ -19,11 +19,43 @@ package lib
19
19
20
20
import (
21
21
"context"
22
+ "fmt"
22
23
24
+ "github.com/arduino/arduino-cli/arduino/libraries"
25
+ "github.com/arduino/arduino-cli/commands"
23
26
rpc "github.com/arduino/arduino-cli/rpc/commands"
24
27
)
25
28
26
29
// LibraryResolveDependencies FIXMEDOC
27
30
func LibraryResolveDependencies (ctx context.Context , req * rpc.LibraryResolveDependenciesReq ) (* rpc.LibraryResolveDependenciesResp , error ) {
28
- return & rpc.LibraryResolveDependenciesResp {}, nil
31
+ lm := commands .GetLibraryManager (req .GetInstance ().GetId ())
32
+
33
+ // Search the requested lib
34
+ reqLibRelease , err := findLibraryIndexRelease (lm , req )
35
+ if err != nil {
36
+ return nil , fmt .Errorf ("looking for library: %s" , err )
37
+ }
38
+
39
+ // Extract all installed libraries
40
+ installedLibs := map [string ]* libraries.Library {}
41
+ for _ , lib := range listLibraries (lm , false , false ) {
42
+ installedLibs [lib .Library .Name ] = lib .Library
43
+ }
44
+
45
+ // Resolve all dependencies...
46
+ deps := lm .Index .ResolveDependencies (reqLibRelease )
47
+ res := []* rpc.LibraryDependencyStatus {}
48
+ for _ , dep := range deps {
49
+ // ...and add information on currently installed versions of the libraries
50
+ installed := ""
51
+ if installedLib , has := installedLibs [dep .GetName ()]; has {
52
+ installed = installedLib .Version .String ()
53
+ }
54
+ res = append (res , & rpc.LibraryDependencyStatus {
55
+ Name : dep .GetName (),
56
+ VersionRequired : dep .GetVersion ().String (),
57
+ VersionInstalled : installed ,
58
+ })
59
+ }
60
+ return & rpc.LibraryResolveDependenciesResp {Dependencies : res }, nil
29
61
}
0 commit comments