Skip to content

Commit 86e6ca5

Browse files
committed
Ultra-simplified 'outdated' 'update' and 'upgrade'
1 parent 4388cd4 commit 86e6ca5

File tree

3 files changed

+24
-125
lines changed

3 files changed

+24
-125
lines changed

cli/outdated/outdated.go

Lines changed: 7 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,13 @@
1616
package outdated
1717

1818
import (
19-
"context"
2019
"os"
2120

22-
"github.com/arduino/arduino-cli/cli/errorcodes"
23-
"github.com/arduino/arduino-cli/cli/feedback"
21+
"github.com/arduino/arduino-cli/cli/core"
2422
"github.com/arduino/arduino-cli/cli/instance"
25-
"github.com/arduino/arduino-cli/commands/core"
26-
"github.com/arduino/arduino-cli/commands/lib"
23+
"github.com/arduino/arduino-cli/cli/lib"
2724
"github.com/arduino/arduino-cli/i18n"
2825
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
29-
"github.com/arduino/arduino-cli/table"
3026
"github.com/sirupsen/logrus"
3127
"github.com/spf13/cobra"
3228
)
@@ -44,57 +40,17 @@ that can be upgraded. If nothing needs to be updated the output is empty.`),
4440
Args: cobra.NoArgs,
4541
Run: runOutdatedCommand,
4642
}
47-
4843
return outdatedCommand
4944
}
5045

5146
func runOutdatedCommand(cmd *cobra.Command, args []string) {
5247
inst := instance.CreateAndInit()
5348
logrus.Info("Executing `arduino-cli outdated`")
54-
55-
outdatedResp, err := outdated.Outdated(context.Background(), &rpc.OutdatedRequest{
56-
Instance: inst,
57-
})
58-
if err != nil {
59-
feedback.Errorf(tr("Error retrieving outdated cores and libraries: %v"), err)
60-
}
61-
62-
feedback.PrintResult(outdatedResult{
63-
Platforms: outdatedResp.OutdatedPlatforms,
64-
Libraries: outdatedResp.OutdatedLibraries})
65-
}
66-
67-
// output from this command requires special formatting, let's create a dedicated
68-
// feedback.Result implementation
69-
type outdatedResult struct {
70-
Platforms []*rpc.Platform
71-
Libraries []*rpc.InstalledLibrary
49+
Outdated(inst)
7250
}
7351

74-
func (or outdatedResult) Data() interface{} {
75-
return or
76-
}
77-
78-
func (or outdatedResult) String() string {
79-
// Prints outdated cores
80-
t1 := table.New()
81-
if len(or.Platforms) > 0 {
82-
t1.SetHeader(tr("ID"), tr("Installed version"), tr("New version"), tr("Name"))
83-
for _, p := range or.Platforms {
84-
t1.AddRow(p.Id, p.Installed, p.Latest, p.Name)
85-
}
86-
}
87-
88-
// Prints outdated libraries
89-
t2 := table.New()
90-
if len(or.Libraries) > 0 {
91-
t2.SetHeader(tr("Library name"), tr("Installed version"), tr("New version"))
92-
for _, l := range or.Libraries {
93-
t2.AddRow(l.Library.Name, l.Library.Version, l.Release.Version)
94-
}
95-
}
96-
if len(or.Libraries) > 0 && len(or.Platforms) > 0 {
97-
return t1.Render() + "\n" + t2.Render() // handle the new line between tables
98-
}
99-
return t1.Render() + t2.Render()
52+
// Outdated returns a list of outdated platforms and libraries
53+
func Outdated(inst *rpc.Instance) {
54+
core.List(inst, false, true)
55+
lib.List(inst, []string{}, false, true)
10056
}

cli/update/update.go

Lines changed: 7 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,13 @@
1616
package update
1717

1818
import (
19-
"context"
2019
"os"
2120

22-
"github.com/arduino/arduino-cli/cli/errorcodes"
23-
"github.com/arduino/arduino-cli/cli/feedback"
21+
"github.com/arduino/arduino-cli/cli/core"
2422
"github.com/arduino/arduino-cli/cli/instance"
25-
"github.com/arduino/arduino-cli/cli/output"
26-
"github.com/arduino/arduino-cli/commands"
27-
"github.com/arduino/arduino-cli/commands/outdated"
23+
"github.com/arduino/arduino-cli/cli/lib"
24+
"github.com/arduino/arduino-cli/cli/outdated"
2825
"github.com/arduino/arduino-cli/i18n"
29-
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
30-
"github.com/arduino/arduino-cli/table"
3126
"github.com/sirupsen/logrus"
3227
"github.com/spf13/cobra"
3328
)
@@ -55,49 +50,10 @@ var updateFlags struct {
5550
func runUpdateCommand(cmd *cobra.Command, args []string) {
5651
inst := instance.CreateInstanceAndRunFirstUpdate()
5752
logrus.Info("Executing `arduino-cli update`")
58-
59-
err := commands.UpdateCoreLibrariesIndex(context.Background(),
60-
&rpc.UpdateCoreLibrariesIndexRequest{Instance: inst},
61-
output.ProgressBar())
62-
if err != nil {
63-
feedback.Errorf(tr("Error updating core and libraries index: %v"), err)
64-
os.Exit(errorcodes.ErrGeneric)
65-
}
66-
53+
lib.UpdateIndex(inst)
54+
core.UpdateIndex(inst)
55+
instance.Init(inst)
6756
if updateFlags.showOutdated {
68-
// To show outdated platforms and libraries we need to initialize our instance
69-
// otherwise nothing would be shown
70-
for _, err := range instance.Init(inst) {
71-
feedback.Errorf(tr("Error initializing instance: %v"), err)
72-
}
73-
74-
outdatedResp, err := outdated.Outdated(context.Background(), &rpc.OutdatedRequest{
75-
Instance: inst,
76-
})
77-
if err != nil {
78-
feedback.Errorf(tr("Error retrieving outdated cores and libraries: %v"), err)
79-
}
80-
81-
// Prints outdated cores
82-
tab := table.New()
83-
tab.SetHeader(tr("Core name"), tr("Installed version"), tr("New version"))
84-
if len(outdatedResp.OutdatedPlatforms) > 0 {
85-
for _, p := range outdatedResp.OutdatedPlatforms {
86-
tab.AddRow(p.Name, p.Installed, p.Latest)
87-
}
88-
feedback.Print(tab.Render())
89-
}
90-
91-
// Prints outdated libraries
92-
tab = table.New()
93-
tab.SetHeader(tr("Library name"), tr("Installed version"), tr("New version"))
94-
if len(outdatedResp.OutdatedLibraries) > 0 {
95-
for _, l := range outdatedResp.OutdatedLibraries {
96-
tab.AddRow(l.Library.Name, l.Library.Version, l.Release.Version)
97-
}
98-
feedback.Print(tab.Render())
99-
}
57+
outdated.Outdated(inst)
10058
}
101-
102-
logrus.Info("Done")
10359
}

cli/upgrade/upgrade.go

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,52 +16,39 @@
1616
package upgrade
1717

1818
import (
19-
"context"
2019
"os"
2120

2221
"github.com/arduino/arduino-cli/cli/arguments"
23-
"github.com/arduino/arduino-cli/cli/feedback"
22+
"github.com/arduino/arduino-cli/cli/core"
2423
"github.com/arduino/arduino-cli/cli/instance"
25-
"github.com/arduino/arduino-cli/cli/output"
26-
"github.com/arduino/arduino-cli/commands/upgrade"
24+
"github.com/arduino/arduino-cli/cli/lib"
2725
"github.com/arduino/arduino-cli/i18n"
28-
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
2926
"github.com/sirupsen/logrus"
3027
"github.com/spf13/cobra"
3128
)
3229

33-
var (
34-
tr = i18n.Tr
35-
postInstallFlags arguments.PostInstallFlags
36-
)
30+
var tr = i18n.Tr
3731

3832
// NewCommand creates a new `upgrade` command
3933
func NewCommand() *cobra.Command {
34+
var postInstallFlags arguments.PostInstallFlags
4035
upgradeCommand := &cobra.Command{
4136
Use: "upgrade",
4237
Short: tr("Upgrades installed cores and libraries."),
4338
Long: tr("Upgrades installed cores and libraries to latest version."),
4439
Example: " " + os.Args[0] + " upgrade",
4540
Args: cobra.NoArgs,
46-
Run: runUpgradeCommand,
41+
Run: func(cmd *cobra.Command, args []string) {
42+
runUpgradeCommand(postInstallFlags.DetectSkipPostInstallValue())
43+
},
4744
}
48-
4945
postInstallFlags.AddToCommand(upgradeCommand)
5046
return upgradeCommand
5147
}
5248

53-
func runUpgradeCommand(cmd *cobra.Command, args []string) {
49+
func runUpgradeCommand(skipPostInstall bool) {
5450
inst := instance.CreateAndInit()
5551
logrus.Info("Executing `arduino-cli upgrade`")
56-
57-
err := upgrade.Upgrade(context.Background(), &rpc.UpgradeRequest{
58-
Instance: inst,
59-
SkipPostInstall: postInstallFlags.DetectSkipPostInstallValue(),
60-
}, output.NewDownloadProgressBarCB(), output.TaskProgress())
61-
62-
if err != nil {
63-
feedback.Errorf(tr("Error upgrading: %v"), err)
64-
}
65-
66-
logrus.Info("Done")
52+
lib.Upgrade(inst, []string{})
53+
core.Upgrade(inst, []string{}, skipPostInstall)
6754
}

0 commit comments

Comments
 (0)