Skip to content

Commit

Permalink
Better handling of 'core outdated' results
Browse files Browse the repository at this point in the history
  • Loading branch information
cmaglie committed Oct 10, 2023
1 parent 9e1ea0e commit 94413ed
Showing 1 changed file with 18 additions and 5 deletions.
23 changes: 18 additions & 5 deletions internal/cli/outdated/outdated.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import (
"github.com/arduino/arduino-cli/i18n"
"github.com/arduino/arduino-cli/internal/cli/core"
"github.com/arduino/arduino-cli/internal/cli/feedback"
"github.com/arduino/arduino-cli/internal/cli/feedback/result"
"github.com/arduino/arduino-cli/internal/cli/instance"
"github.com/arduino/arduino-cli/internal/cli/lib"
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
Expand Down Expand Up @@ -57,17 +58,26 @@ func runOutdatedCommand(cmd *cobra.Command, args []string) {
// Outdated prints a list of outdated platforms and libraries
func Outdated(inst *rpc.Instance) {
feedback.PrintResult(
outdatedResult{core.GetList(inst, false, true), lib.GetList(inst, []string{}, false, true)},
newOutdatedResult(core.GetList(inst, false, true), lib.GetList(inst, []string{}, false, true)),
)
}

// output from this command requires special formatting, let's create a dedicated
// feedback.Result implementation
type outdatedResult struct {
Platforms []*rpc.PlatformSummary `json:"platforms,omitempty"`
Platforms []*result.Platform `json:"platforms,omitempty"`
InstalledLibs []*rpc.InstalledLibrary `json:"libraries,omitempty"`
}

func newOutdatedResult(inPlatforms []*rpc.PlatformSummary, inLibraries []*rpc.InstalledLibrary) *outdatedResult {
res := &outdatedResult{}
for _, platformSummary := range inPlatforms {
res.Platforms = append(res.Platforms, result.NewPlatformResult(platformSummary))
}
res.InstalledLibs = inLibraries
return res
}

func (ir outdatedResult) Data() interface{} {
return &ir
}
Expand All @@ -93,11 +103,14 @@ func (ir outdatedResult) String() string {

// Based on internal/cli/core/list.go
for _, p := range ir.Platforms {
name := p.GetLatestRelease().GetName()
if p.GetMetadata().Deprecated {
name := ""
if latest := p.GetLatestRelease(); latest != nil {
name = latest.Name
}
if p.Deprecated {
name = fmt.Sprintf("[%s] %s", tr("DEPRECATED"), name)
}
t.AddRow(p.GetMetadata().Id, name, p.InstalledVersion, p.LatestVersion, "", "")
t.AddRow(p.Id, name, p.InstalledVersion, p.LatestVersion, "", "")
}

// Based on internal/cli/lib/list.go
Expand Down

0 comments on commit 94413ed

Please sign in to comment.