Skip to content

Commit 192150f

Browse files
feat: add brick details completions
This add completions from brick details while tabbing in cli mode. Closes #5
1 parent 5a33829 commit 192150f

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

cmd/arduino-app-cli/brick/details.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222

2323
"github.com/spf13/cobra"
2424

25+
"github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/completion"
2526
"github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/internal/servicelocator"
2627
"github.com/arduino/arduino-app-cli/cmd/feedback"
2728
"github.com/arduino/arduino-app-cli/internal/orchestrator/bricks"
@@ -36,6 +37,7 @@ func newBricksDetailsCmd(cfg config.Configuration) *cobra.Command {
3637
Run: func(cmd *cobra.Command, args []string) {
3738
bricksDetailsHandler(args[0], cfg)
3839
},
40+
ValidArgsFunction: completion.BrickIDs(),
3941
}
4042
}
4143

cmd/arduino-app-cli/completion/completion.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/internal/servicelocator"
2525
"github.com/arduino/arduino-app-cli/cmd/feedback"
2626
"github.com/arduino/arduino-app-cli/internal/orchestrator"
27+
"github.com/arduino/arduino-app-cli/internal/orchestrator/bricks"
2728
"github.com/arduino/arduino-app-cli/internal/orchestrator/config"
2829
)
2930

@@ -97,3 +98,24 @@ func ApplicationNamesWithFilterFunc(cfg config.Configuration, filter func(apps o
9798
return res, cobra.ShellCompDirectiveNoFileComp
9899
}
99100
}
101+
102+
func BrickIDs() cobra.CompletionFunc {
103+
return BrickIDsWithFilterFunc(func(_ bricks.BrickListItem) bool { return true })
104+
}
105+
106+
func BrickIDsWithFilterFunc(filter func(apps bricks.BrickListItem) bool) cobra.CompletionFunc {
107+
return func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
108+
brickList, err := servicelocator.GetBrickService().List()
109+
if err != nil {
110+
return nil, cobra.ShellCompDirectiveError
111+
}
112+
113+
var res []string
114+
for _, brick := range brickList.Bricks {
115+
if filter(brick) {
116+
res = append(res, brick.ID)
117+
}
118+
}
119+
return res, cobra.ShellCompDirectiveNoFileComp
120+
}
121+
}

0 commit comments

Comments
 (0)