Skip to content

Commit 4d31f4f

Browse files
authored
fix arduino-cli outdated --format json output (arduino#1746)
1 parent 0a1d8ee commit 4d31f4f

File tree

2 files changed

+32
-15
lines changed

2 files changed

+32
-15
lines changed

cli/outdated/outdated.go

+31-14
Original file line numberDiff line numberDiff line change
@@ -57,25 +57,42 @@ func runOutdatedCommand(cmd *cobra.Command, args []string) {
5757
feedback.Errorf(tr("Error retrieving outdated cores and libraries: %v"), err)
5858
}
5959

60+
feedback.PrintResult(outdatedResult{
61+
Platforms: outdatedResp.OutdatedPlatforms,
62+
Libraries: outdatedResp.OutdatedLibraries})
63+
}
64+
65+
// output from this command requires special formatting, let's create a dedicated
66+
// feedback.Result implementation
67+
type outdatedResult struct {
68+
Platforms []*rpc.Platform
69+
Libraries []*rpc.InstalledLibrary
70+
}
71+
72+
func (or outdatedResult) Data() interface{} {
73+
return or
74+
}
75+
76+
func (or outdatedResult) String() string {
6077
// Prints outdated cores
61-
tab := table.New()
62-
tab.SetHeader(tr("ID"), tr("Installed version"), tr("New version"), tr("Name"))
63-
if len(outdatedResp.OutdatedPlatforms) > 0 {
64-
for _, p := range outdatedResp.OutdatedPlatforms {
65-
tab.AddRow(p.Id, p.Installed, p.Latest, p.Name)
78+
t1 := table.New()
79+
if len(or.Platforms) > 0 {
80+
t1.SetHeader(tr("ID"), tr("Installed version"), tr("New version"), tr("Name"))
81+
for _, p := range or.Platforms {
82+
t1.AddRow(p.Id, p.Installed, p.Latest, p.Name)
6683
}
67-
feedback.Print(tab.Render())
6884
}
6985

7086
// Prints outdated libraries
71-
tab = table.New()
72-
tab.SetHeader(tr("Library name"), tr("Installed version"), tr("New version"))
73-
if len(outdatedResp.OutdatedLibraries) > 0 {
74-
for _, l := range outdatedResp.OutdatedLibraries {
75-
tab.AddRow(l.Library.Name, l.Library.Version, l.Release.Version)
87+
t2 := table.New()
88+
if len(or.Libraries) > 0 {
89+
t2.SetHeader(tr("Library name"), tr("Installed version"), tr("New version"))
90+
for _, l := range or.Libraries {
91+
t2.AddRow(l.Library.Name, l.Library.Version, l.Release.Version)
7692
}
77-
feedback.Print(tab.Render())
7893
}
79-
80-
logrus.Info("Done")
94+
if len(or.Libraries) > 0 && len(or.Platforms) > 0 {
95+
return t1.Render() + "\n" + t2.Render() // handle the new line between tables
96+
}
97+
return t1.Render() + t2.Render()
8198
}

test/test_upgrade.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def test_upgrade(run_command):
4242
# Verifies cores and libraries have been updated
4343
result = run_command(["outdated"])
4444
assert result.ok
45-
assert result.stdout == ""
45+
assert result.stdout == "\n"
4646

4747

4848
def test_upgrade_using_library_with_invalid_version(run_command, data_dir):

0 commit comments

Comments
 (0)