Skip to content

Commit cdc80bf

Browse files
cli: board search use feedback result structs
1 parent dcf7f86 commit cdc80bf

File tree

2 files changed

+26
-6
lines changed

2 files changed

+26
-6
lines changed

internal/cli/board/search.go

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424

2525
"github.com/arduino/arduino-cli/commands/board"
2626
"github.com/arduino/arduino-cli/internal/cli/feedback"
27+
fResult "github.com/arduino/arduino-cli/internal/cli/feedback/result"
2728
"github.com/arduino/arduino-cli/internal/cli/instance"
2829
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
2930
"github.com/arduino/arduino-cli/table"
@@ -60,32 +61,40 @@ func runSearchCommand(cmd *cobra.Command, args []string) {
6061
feedback.Fatal(tr("Error searching boards: %v", err), feedback.ErrGeneric)
6162
}
6263

63-
feedback.PrintResult(searchResults{res.Boards})
64+
feedback.PrintResult(searchResults{fResult.NewBoardListItems(res.Boards)})
6465
}
6566

6667
// output from this command requires special formatting so we create a dedicated
6768
// feedback.Result implementation
6869
type searchResults struct {
69-
boards []*rpc.BoardListItem
70+
boards []*fResult.BoardListItem
7071
}
7172

7273
func (r searchResults) Data() interface{} {
7374
return r.boards
7475
}
7576

7677
func (r searchResults) String() string {
78+
t := table.New()
79+
t.SetHeader(tr("Board Name"), tr("FQBN"), tr("Platform ID"), "")
80+
81+
if len(r.boards) == 0 {
82+
return t.Render()
83+
}
84+
7785
sort.Slice(r.boards, func(i, j int) bool {
78-
return r.boards[i].GetName() < r.boards[j].GetName()
86+
return r.boards[i].Name < r.boards[j].Name
7987
})
8088

81-
t := table.New()
82-
t.SetHeader(tr("Board Name"), tr("FQBN"), tr("Platform ID"), "")
8389
for _, item := range r.boards {
90+
if item == nil {
91+
continue
92+
}
8493
hidden := ""
8594
if item.IsHidden {
8695
hidden = tr("(hidden)")
8796
}
88-
t.AddRow(item.GetName(), item.GetFqbn(), item.Platform.Metadata.Id, hidden)
97+
t.AddRow(item.Name, item.Fqbn, item.Platform.Metadata.Id, hidden)
8998
}
9099
return t.Render()
91100
}

internal/cli/feedback/result/rpc.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -621,6 +621,17 @@ type BoardListItem struct {
621621
Platform *Platform `json:"platform,omitempty"`
622622
}
623623

624+
func NewBoardListItems(b []*rpc.BoardListItem) []*BoardListItem {
625+
if b == nil {
626+
return nil
627+
}
628+
res := make([]*BoardListItem, len(b))
629+
for i, v := range b {
630+
res[i] = NewBoardListItem(v)
631+
}
632+
return res
633+
}
634+
624635
func NewBoardListItem(b *rpc.BoardListItem) *BoardListItem {
625636
if b == nil {
626637
return nil

0 commit comments

Comments
 (0)