@@ -19,10 +19,8 @@ package packagemanager
19
19
20
20
import (
21
21
"fmt"
22
- "os"
23
22
24
23
"github.com/arduino/arduino-cli/arduino/cores"
25
- "github.com/arduino/arduino-cli/common/formatter/output"
26
24
"github.com/cavaliercoder/grab"
27
25
"go.bug.st/relaxed-semver"
28
26
)
@@ -65,58 +63,37 @@ func (pm *PackageManager) FindPlatformRelease(ref *PlatformReference) *cores.Pla
65
63
return platformRelease
66
64
}
67
65
68
- // FindItemsToDownload takes a set of PlatformReference and returns a set of items to download and
66
+ // FindPlatformReleaseDependencies takes a PlatformReference and returns a set of items to download and
69
67
// a set of outputs for non existing platforms.
70
- func (pm * PackageManager ) FindItemsToDownload (items []PlatformReference ) (
71
- []* cores.PlatformRelease , []* cores.ToolRelease , error ) {
72
-
73
- retPlatforms := []* cores.PlatformRelease {}
74
- retTools := []* cores.ToolRelease {}
75
- added := map [string ]bool {}
76
-
77
- for _ , item := range items {
78
- targetPackage , exists := pm .packages .Packages [item .Package ]
79
- if ! exists {
80
- return nil , nil , fmt .Errorf ("package %s not found" , item .Package )
81
- }
82
- platform , exists := targetPackage .Platforms [item .PlatformArchitecture ]
83
- if ! exists {
84
- return nil , nil , fmt .Errorf ("platform %s not found in package %s" , item .PlatformArchitecture , targetPackage .String ())
85
- }
68
+ func (pm * PackageManager ) FindPlatformReleaseDependencies (item * PlatformReference ) (* cores.PlatformRelease , []* cores.ToolRelease , error ) {
69
+ targetPackage , exists := pm .packages .Packages [item .Package ]
70
+ if ! exists {
71
+ return nil , nil , fmt .Errorf ("package %s not found" , item .Package )
72
+ }
73
+ platform , exists := targetPackage .Platforms [item .PlatformArchitecture ]
74
+ if ! exists {
75
+ return nil , nil , fmt .Errorf ("platform %s not found in package %s" , item .PlatformArchitecture , targetPackage .String ())
76
+ }
86
77
87
- if added [platform .String ()] {
88
- continue
78
+ var release * cores.PlatformRelease
79
+ if item .PlatformVersion != nil {
80
+ release = platform .GetRelease (item .PlatformVersion )
81
+ if release == nil {
82
+ return nil , nil , fmt .Errorf ("required version %s not found for platform %s" , item .PlatformVersion , platform .String ())
89
83
}
90
- added [platform .String ()] = true
91
-
92
- var release * cores.PlatformRelease
93
- if item .PlatformVersion != nil {
94
- release = platform .GetRelease (item .PlatformVersion )
95
- if release == nil {
96
- return nil , nil , fmt .Errorf ("required version %s not found for platform %s" , item .PlatformVersion , platform .String ())
97
- }
98
- } else {
99
- release = platform .GetLatestRelease ()
100
- if release == nil {
101
- return nil , nil , fmt .Errorf ("platform %s has no available releases" , platform .String ())
102
- }
84
+ } else {
85
+ release = platform .GetLatestRelease ()
86
+ if release == nil {
87
+ return nil , nil , fmt .Errorf ("platform %s has no available releases" , platform .String ())
103
88
}
104
- retPlatforms = append ( retPlatforms , release )
89
+ }
105
90
106
- // replaces "latest" with latest version too
107
- toolDeps , err := pm .packages .GetDepsOfPlatformRelease (release )
108
- if err != nil {
109
- return nil , nil , fmt .Errorf ("getting tool dependencies for platform %s: %s" , release .String (), err )
110
- }
111
- for _ , tool := range toolDeps {
112
- if added [tool .String ()] {
113
- continue
114
- }
115
- added [tool .String ()] = true
116
- retTools = append (retTools , tool )
117
- }
91
+ // replaces "latest" with latest version too
92
+ toolDeps , err := pm .packages .GetDepsOfPlatformRelease (release )
93
+ if err != nil {
94
+ return nil , nil , fmt .Errorf ("getting tool dependencies for platform %s: %s" , release .String (), err )
118
95
}
119
- return retPlatforms , retTools , nil
96
+ return release , toolDeps , nil
120
97
}
121
98
122
99
// DownloadToolRelease downloads a ToolRelease. If the tool is already downloaded a nil Response
@@ -134,79 +111,3 @@ func (pm *PackageManager) DownloadToolRelease(tool *cores.ToolRelease) (*grab.Re
134
111
func (pm * PackageManager ) DownloadPlatformRelease (platform * cores.PlatformRelease ) (* grab.Response , error ) {
135
112
return platform .Resource .Download (pm .DownloadDir )
136
113
}
137
-
138
- // FIXME: Make more generic and decouple the error print logic (that list should not exists;
139
- // rather a failure @ the first package)
140
-
141
- func (pm * PackageManager ) InstallToolReleases (toolReleases []* cores.ToolRelease ,
142
- result * output.CoreProcessResults ) error {
143
-
144
- for _ , toolRelease := range toolReleases {
145
- pm .Log .WithField ("Package" , toolRelease .Tool .Package .Name ).
146
- WithField ("Name" , toolRelease .Tool .Name ).
147
- WithField ("Version" , toolRelease .Version ).
148
- Info ("Installing tool" )
149
-
150
- err := pm .InstallTool (toolRelease )
151
- var processResult output.ProcessResult
152
- if err != nil {
153
- if os .IsExist (err ) {
154
- pm .Log .WithError (err ).Warnf ("Cannot install tool `%s`, it is already installed" , toolRelease .Tool .Name )
155
- processResult = output.ProcessResult {
156
- Status : "Already Installed" ,
157
- }
158
- } else {
159
- pm .Log .WithError (err ).Warnf ("Cannot install tool `%s`" , toolRelease .Tool .Name )
160
- processResult = output.ProcessResult {
161
- Error : err .Error (),
162
- }
163
- }
164
- } else {
165
- pm .Log .Info ("Adding installed tool to final result" )
166
- processResult = output.ProcessResult {
167
- Status : "Installed" ,
168
- }
169
- }
170
- name := toolRelease .String ()
171
- processResult .ItemName = name
172
- result .Tools [name ] = processResult
173
- }
174
- return nil
175
- }
176
-
177
- func (pm * PackageManager ) InstallPlatformReleases (platformReleases []* cores.PlatformRelease ,
178
- outputResults * output.CoreProcessResults ) error {
179
-
180
- for _ , platformRelease := range platformReleases {
181
- pm .Log .WithField ("Package" , platformRelease .Platform .Package .Name ).
182
- WithField ("Name" , platformRelease .Platform .Name ).
183
- WithField ("Version" , platformRelease .Version ).
184
- Info ("Installing platform" )
185
-
186
- err := pm .InstallPlatform (platformRelease )
187
- var result output.ProcessResult
188
- if err != nil {
189
- if os .IsExist (err ) {
190
- pm .Log .WithError (err ).Warnf ("Cannot install platform `%s`, it is already installed" , platformRelease .Platform .Name )
191
- result = output.ProcessResult {
192
- Status : "Already Installed" ,
193
- }
194
- } else {
195
- pm .Log .WithError (err ).Warnf ("Cannot install platform `%s`" , platformRelease .Platform .Name )
196
- result = output.ProcessResult {
197
- Error : err .Error (),
198
- }
199
- }
200
- } else {
201
- pm .Log .Info ("Adding installed platform to final result" )
202
-
203
- result = output.ProcessResult {
204
- Status : "Installed" ,
205
- }
206
- }
207
- name := platformRelease .String ()
208
- result .ItemName = name
209
- outputResults .Cores [name ] = result
210
- }
211
- return nil
212
- }
0 commit comments