@@ -43,11 +43,43 @@ func (s *arduinoCoreServerImpl) LibraryResolveDependencies(ctx context.Context,
4343 return nil , err
4444 }
4545
46- return libraryResolveDependencies (lme , li , req .GetName (), req .GetVersion (), req .GetDoNotUpdateInstalledLibraries ())
46+ deps , err := libraryResolveDependencies (lme , li , req .GetName (), req .GetVersion (), req .GetDoNotUpdateInstalledLibraries ())
47+ if err != nil {
48+ return nil , err
49+ }
50+
51+ // Extract all installed libraries
52+ installedLibs := map [string ]* libraries.Library {}
53+ for _ , lib := range listLibraries (lme , li , false , false ) {
54+ installedLibs [lib .Library .Name ] = lib .Library
55+ }
56+
57+ res := []* rpc.LibraryDependencyStatus {}
58+ for _ , dep := range deps {
59+ // ...and add information on currently installed versions of the libraries
60+ var installed * semver.Version
61+ required := dep .GetVersion ()
62+ if installedLib , has := installedLibs [dep .GetName ()]; has {
63+ installed = installedLib .Version
64+ if installed != nil && required != nil && installed .Equal (required ) {
65+ // avoid situations like installed=0.53 and required=0.53.0
66+ required = installed
67+ }
68+ }
69+ res = append (res , & rpc.LibraryDependencyStatus {
70+ Name : dep .GetName (),
71+ VersionRequired : required .String (),
72+ VersionInstalled : installed .String (),
73+ })
74+ }
75+ sort .Slice (res , func (i , j int ) bool {
76+ return res [i ].GetName () < res [j ].GetName ()
77+ })
78+ return & rpc.LibraryResolveDependenciesResponse {Dependencies : res }, nil
4779}
4880
4981func libraryResolveDependencies (lme * librariesmanager.Explorer , li * librariesindex.Index ,
50- reqName , reqVersion string , noOverwrite bool ) (* rpc. LibraryResolveDependenciesResponse , error ) {
82+ reqName , reqVersion string , noOverwrite bool ) ([] * librariesindex. Release , error ) {
5183 version , err := parseVersion (reqVersion )
5284 if err != nil {
5385 return nil , err
@@ -59,12 +91,6 @@ func libraryResolveDependencies(lme *librariesmanager.Explorer, li *librariesind
5991 return nil , err
6092 }
6193
62- // Extract all installed libraries
63- installedLibs := map [string ]* libraries.Library {}
64- for _ , lib := range listLibraries (lme , li , false , false ) {
65- installedLibs [lib .Library .Name ] = lib .Library
66- }
67-
6894 // Resolve all dependencies...
6995 var overrides []* librariesindex.Release
7096 if noOverwrite {
@@ -92,26 +118,5 @@ func libraryResolveDependencies(lme *librariesmanager.Explorer, li *librariesind
92118 return nil , & cmderrors.LibraryDependenciesResolutionFailedError {}
93119 }
94120
95- res := []* rpc.LibraryDependencyStatus {}
96- for _ , dep := range deps {
97- // ...and add information on currently installed versions of the libraries
98- var installed * semver.Version
99- required := dep .GetVersion ()
100- if installedLib , has := installedLibs [dep .GetName ()]; has {
101- installed = installedLib .Version
102- if installed != nil && required != nil && installed .Equal (required ) {
103- // avoid situations like installed=0.53 and required=0.53.0
104- required = installed
105- }
106- }
107- res = append (res , & rpc.LibraryDependencyStatus {
108- Name : dep .GetName (),
109- VersionRequired : required .String (),
110- VersionInstalled : installed .String (),
111- })
112- }
113- sort .Slice (res , func (i , j int ) bool {
114- return res [i ].GetName () < res [j ].GetName ()
115- })
116- return & rpc.LibraryResolveDependenciesResponse {Dependencies : res }, nil
121+ return deps , nil
117122}
0 commit comments