Skip to content

Commit 2f87583

Browse files
authored
Create gRPC interface for update, upgrade and outdated commands (#903)
1 parent 034dd0f commit 2f87583

File tree

9 files changed

+1324
-409
lines changed

9 files changed

+1324
-409
lines changed

Diff for: cli/outdated/outdated.go

+10-24
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@ import (
2222
"github.com/arduino/arduino-cli/cli/errorcodes"
2323
"github.com/arduino/arduino-cli/cli/feedback"
2424
"github.com/arduino/arduino-cli/cli/instance"
25-
"github.com/arduino/arduino-cli/commands/core"
26-
"github.com/arduino/arduino-cli/commands/lib"
25+
"github.com/arduino/arduino-cli/commands"
2726
rpc "github.com/arduino/arduino-cli/rpc/commands"
2827
"github.com/arduino/arduino-cli/table"
2928
"github.com/sirupsen/logrus"
@@ -48,47 +47,34 @@ func NewCommand() *cobra.Command {
4847
func runOutdatedCommand(cmd *cobra.Command, args []string) {
4948
inst, err := instance.CreateInstance()
5049
if err != nil {
51-
feedback.Errorf("Error upgrading: %v", err)
50+
feedback.Errorf("Error running outdated command: %v", err)
5251
os.Exit(errorcodes.ErrGeneric)
5352
}
5453

5554
logrus.Info("Executing `arduino outdated`")
5655

57-
// Gets outdated cores
58-
targets, err := core.GetPlatforms(inst.Id, true)
59-
if err != nil {
60-
feedback.Errorf("Error retrieving core list: %v", err)
61-
os.Exit(errorcodes.ErrGeneric)
62-
}
63-
64-
// Gets outdated libraries
65-
res, err := lib.LibraryList(context.Background(), &rpc.LibraryListReq{
66-
Instance: inst,
67-
All: false,
68-
Updatable: true,
56+
outdatedResp, err := commands.Outdated(context.Background(), &rpc.OutdatedReq{
57+
Instance: inst,
6958
})
7059
if err != nil {
71-
feedback.Errorf("Error retrieving library list: %v", err)
72-
os.Exit(errorcodes.ErrGeneric)
60+
feedback.Errorf("Error retrieving outdated cores and libraries: %v", err)
7361
}
7462

7563
// Prints outdated cores
7664
tab := table.New()
7765
tab.SetHeader("Core name", "Installed version", "New version")
78-
if len(targets) > 0 {
79-
for _, t := range targets {
80-
plat := t.Platform
81-
tab.AddRow(plat.Name, t.Version, plat.GetLatestRelease().Version)
66+
if len(outdatedResp.OutdatedPlatform) > 0 {
67+
for _, p := range outdatedResp.OutdatedPlatform {
68+
tab.AddRow(p.Name, p.Installed, p.Latest)
8269
}
8370
feedback.Print(tab.Render())
8471
}
8572

8673
// Prints outdated libraries
8774
tab = table.New()
8875
tab.SetHeader("Library name", "Installed version", "New version")
89-
libs := res.GetInstalledLibrary()
90-
if len(libs) > 0 {
91-
for _, l := range libs {
76+
if len(outdatedResp.OutdatedLibrary) > 0 {
77+
for _, l := range outdatedResp.OutdatedLibrary {
9278
tab.AddRow(l.Library.Name, l.Library.Version, l.Release.Version)
9379
}
9480
feedback.Print(tab.Render())

Diff for: cli/update/update.go

+10-34
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ import (
2424
"github.com/arduino/arduino-cli/cli/instance"
2525
"github.com/arduino/arduino-cli/cli/output"
2626
"github.com/arduino/arduino-cli/commands"
27-
"github.com/arduino/arduino-cli/commands/core"
28-
"github.com/arduino/arduino-cli/commands/lib"
2927
rpc "github.com/arduino/arduino-cli/rpc/commands"
3028
"github.com/arduino/arduino-cli/table"
3129
"github.com/sirupsen/logrus"
@@ -55,63 +53,41 @@ func runUpdateCommand(cmd *cobra.Command, args []string) {
5553

5654
logrus.Info("Executing `arduino update`")
5755

58-
_, err := commands.UpdateIndex(context.Background(), &rpc.UpdateIndexReq{
56+
err := commands.UpdateCoreLibrariesIndex(context.Background(), &rpc.UpdateCoreLibrariesIndexReq{
5957
Instance: instance,
6058
}, output.ProgressBar())
6159
if err != nil {
62-
feedback.Errorf("Error updating core index: %v", err)
63-
os.Exit(errorcodes.ErrGeneric)
64-
}
65-
66-
err = commands.UpdateLibrariesIndex(context.Background(), &rpc.UpdateLibrariesIndexReq{
67-
Instance: instance,
68-
}, output.ProgressBar())
69-
if err != nil {
70-
feedback.Errorf("Error updating library index: %v", err)
60+
feedback.Errorf("Error updating core and libraries index: %v", err)
7161
os.Exit(errorcodes.ErrGeneric)
7262
}
7363

7464
if updateFlags.showOutdated {
75-
// Gets outdated cores
76-
targets, err := core.GetPlatforms(instance.Id, true)
77-
if err != nil {
78-
feedback.Errorf("Error retrieving core list: %v", err)
79-
os.Exit(errorcodes.ErrGeneric)
80-
}
81-
82-
// Gets outdated libraries
83-
res, err := lib.LibraryList(context.Background(), &rpc.LibraryListReq{
84-
Instance: instance,
85-
All: false,
86-
Updatable: true,
65+
outdatedResp, err := commands.Outdated(context.Background(), &rpc.OutdatedReq{
66+
Instance: instance,
8767
})
8868
if err != nil {
89-
feedback.Errorf("Error retrieving library list: %v", err)
90-
os.Exit(errorcodes.ErrGeneric)
69+
feedback.Errorf("Error retrieving outdated cores and libraries: %v", err)
9170
}
9271

9372
// Prints outdated cores
9473
tab := table.New()
9574
tab.SetHeader("Core name", "Installed version", "New version")
96-
if len(targets) > 0 {
97-
for _, t := range targets {
98-
plat := t.Platform
99-
tab.AddRow(plat.Name, t.Version, plat.GetLatestRelease().Version)
75+
if len(outdatedResp.OutdatedPlatform) > 0 {
76+
for _, p := range outdatedResp.OutdatedPlatform {
77+
tab.AddRow(p.Name, p.Installed, p.Latest)
10078
}
10179
feedback.Print(tab.Render())
10280
}
10381

10482
// Prints outdated libraries
10583
tab = table.New()
10684
tab.SetHeader("Library name", "Installed version", "New version")
107-
libs := res.GetInstalledLibrary()
108-
if len(libs) > 0 {
109-
for _, l := range libs {
85+
if len(outdatedResp.OutdatedLibrary) > 0 {
86+
for _, l := range outdatedResp.OutdatedLibrary {
11087
tab.AddRow(l.Library.Name, l.Library.Version, l.Release.Version)
11188
}
11289
feedback.Print(tab.Render())
11390
}
114-
11591
}
11692

11793
logrus.Info("Done")

Diff for: cli/upgrade/upgrade.go

+5-40
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@ import (
2323
"github.com/arduino/arduino-cli/cli/feedback"
2424
"github.com/arduino/arduino-cli/cli/instance"
2525
"github.com/arduino/arduino-cli/cli/output"
26-
"github.com/arduino/arduino-cli/commands/core"
27-
"github.com/arduino/arduino-cli/commands/lib"
26+
"github.com/arduino/arduino-cli/commands"
2827
rpc "github.com/arduino/arduino-cli/rpc/commands"
2928
"github.com/sirupsen/logrus"
3029
"github.com/spf13/cobra"
@@ -53,46 +52,12 @@ func runUpgradeCommand(cmd *cobra.Command, args []string) {
5352

5453
logrus.Info("Executing `arduino upgrade`")
5554

56-
// Gets list of libraries to upgrade, cores' libraries are ignored since they're upgraded
57-
// when the core is
58-
res, err := lib.LibraryList(context.Background(), &rpc.LibraryListReq{
59-
Instance: inst,
60-
All: false,
61-
Updatable: true,
62-
})
63-
if err != nil {
64-
feedback.Errorf("Error retrieving library list: %v", err)
65-
os.Exit(errorcodes.ErrGeneric)
66-
}
67-
libraries := []string{}
68-
for _, l := range res.InstalledLibrary {
69-
libraries = append(libraries, l.Library.Name)
70-
}
71-
72-
// Upgrades libraries
73-
err = lib.LibraryUpgrade(inst.Id, libraries, output.ProgressBar(), output.TaskProgress())
74-
if err != nil {
75-
feedback.Errorf("Error upgrading libraries: %v", err)
76-
os.Exit(errorcodes.ErrGeneric)
77-
}
55+
err = commands.Upgrade(context.Background(), &rpc.UpgradeReq{
56+
Instance: inst,
57+
}, output.NewDownloadProgressBarCB(), output.TaskProgress())
7858

79-
targets, err := core.GetPlatforms(inst.Id, true)
8059
if err != nil {
81-
feedback.Errorf("Error retrieving core list: %v", err)
82-
os.Exit(errorcodes.ErrGeneric)
83-
}
84-
85-
for _, t := range targets {
86-
r := &rpc.PlatformUpgradeReq{
87-
Instance: inst,
88-
PlatformPackage: t.Platform.Package.Name,
89-
Architecture: t.Platform.Architecture,
90-
}
91-
_, err := core.PlatformUpgrade(context.Background(), r, output.ProgressBar(), output.TaskProgress())
92-
if err != nil {
93-
feedback.Errorf("Error during upgrade: %v", err)
94-
os.Exit(errorcodes.ErrGeneric)
95-
}
60+
feedback.Errorf("Error upgrading: %v", err)
9661
}
9762

9863
logrus.Info("Done")

Diff for: commands/core/core.go renamed to commands/core.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
// Arduino software without disclosing the source code of your own applications.
1414
// To purchase a commercial license, send an email to [email protected].
1515

16-
package core
16+
package commands
1717

1818
import (
1919
"github.com/arduino/arduino-cli/arduino/cores"

Diff for: commands/core/search.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ func PlatformSearch(instanceID int32, searchArgs string, allVersions bool) (*rpc
8585

8686
out := make([]*rpc.Platform, len(res))
8787
for i, platformRelease := range res {
88-
out[i] = PlatformReleaseToRPC(platformRelease)
88+
out[i] = commands.PlatformReleaseToRPC(platformRelease)
8989
}
9090
return &rpc.PlatformSearchResp{SearchOutput: out}, nil
9191
}

Diff for: commands/daemon/daemon.go

+37-1
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,42 @@ func (s *ArduinoCoreServerImpl) UpdateLibrariesIndex(req *rpc.UpdateLibrariesInd
101101
return stream.Send(&rpc.UpdateLibrariesIndexResp{})
102102
}
103103

104+
// UpdateCoreLibrariesIndex FIXMEDOC
105+
func (s *ArduinoCoreServerImpl) UpdateCoreLibrariesIndex(req *rpc.UpdateCoreLibrariesIndexReq, stream rpc.ArduinoCore_UpdateCoreLibrariesIndexServer) error {
106+
err := commands.UpdateCoreLibrariesIndex(stream.Context(), req,
107+
func(p *rpc.DownloadProgress) { stream.Send(&rpc.UpdateCoreLibrariesIndexResp{DownloadProgress: p}) },
108+
)
109+
if err != nil {
110+
return err
111+
}
112+
return stream.Send(&rpc.UpdateCoreLibrariesIndexResp{})
113+
}
114+
115+
// Outdated FIXMEDOC
116+
func (s *ArduinoCoreServerImpl) Outdated(ctx context.Context, req *rpc.OutdatedReq) (*rpc.OutdatedResp, error) {
117+
return commands.Outdated(ctx, req)
118+
}
119+
120+
// Upgrade FIXMEDOC
121+
func (s *ArduinoCoreServerImpl) Upgrade(req *rpc.UpgradeReq, stream rpc.ArduinoCore_UpgradeServer) error {
122+
err := commands.Upgrade(stream.Context(), req,
123+
func(p *rpc.DownloadProgress) {
124+
stream.Send(&rpc.UpgradeResp{
125+
Progress: p,
126+
})
127+
},
128+
func(p *rpc.TaskProgress) {
129+
stream.Send(&rpc.UpgradeResp{
130+
TaskProgress: p,
131+
})
132+
},
133+
)
134+
if err != nil {
135+
return err
136+
}
137+
return stream.Send(&rpc.UpgradeResp{})
138+
}
139+
104140
// Init FIXMEDOC
105141
func (s *ArduinoCoreServerImpl) Init(req *rpc.InitReq, stream rpc.ArduinoCore_InitServer) error {
106142
resp, err := commands.Init(stream.Context(), req,
@@ -195,7 +231,7 @@ func (s *ArduinoCoreServerImpl) PlatformList(ctx context.Context, req *rpc.Platf
195231

196232
installed := []*rpc.Platform{}
197233
for _, p := range platforms {
198-
rpcPlatform := core.PlatformReleaseToRPC(p)
234+
rpcPlatform := commands.PlatformReleaseToRPC(p)
199235
rpcPlatform.Installed = p.Version.String()
200236
installed = append(installed, rpcPlatform)
201237
}

0 commit comments

Comments
 (0)