@@ -43,11 +43,40 @@ 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+
48+ // Extract all installed libraries
49+ installedLibs := map [string ]* libraries.Library {}
50+ for _ , lib := range listLibraries (lme , li , false , false ) {
51+ installedLibs [lib .Library .Name ] = lib .Library
52+ }
53+
54+ res := []* rpc.LibraryDependencyStatus {}
55+ for _ , dep := range deps {
56+ // ...and add information on currently installed versions of the libraries
57+ var installed * semver.Version
58+ required := dep .GetVersion ()
59+ if installedLib , has := installedLibs [dep .GetName ()]; has {
60+ installed = installedLib .Version
61+ if installed != nil && required != nil && installed .Equal (required ) {
62+ // avoid situations like installed=0.53 and required=0.53.0
63+ required = installed
64+ }
65+ }
66+ res = append (res , & rpc.LibraryDependencyStatus {
67+ Name : dep .GetName (),
68+ VersionRequired : required .String (),
69+ VersionInstalled : installed .String (),
70+ })
71+ }
72+ sort .Slice (res , func (i , j int ) bool {
73+ return res [i ].GetName () < res [j ].GetName ()
74+ })
75+ return & rpc.LibraryResolveDependenciesResponse {Dependencies : res }, nil
4776}
4877
4978func libraryResolveDependencies (lme * librariesmanager.Explorer , li * librariesindex.Index ,
50- reqName , reqVersion string , noOverwrite bool ) (* rpc. LibraryResolveDependenciesResponse , error ) {
79+ reqName , reqVersion string , noOverwrite bool ) ([] * librariesindex. Release , error ) {
5180 version , err := parseVersion (reqVersion )
5281 if err != nil {
5382 return nil , err
@@ -59,12 +88,6 @@ func libraryResolveDependencies(lme *librariesmanager.Explorer, li *librariesind
5988 return nil , err
6089 }
6190
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-
6891 // Resolve all dependencies...
6992 var overrides []* librariesindex.Release
7093 if noOverwrite {
@@ -92,26 +115,5 @@ func libraryResolveDependencies(lme *librariesmanager.Explorer, li *librariesind
92115 return nil , & cmderrors.LibraryDependenciesResolutionFailedError {}
93116 }
94117
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
118+ return deps , nil
117119}
0 commit comments