aboutsummaryrefslogtreecommitdiff
path: root/cmd/x
diff options
context:
space:
mode:
authorXe Iaso <me@xeiaso.net>2024-05-24 22:07:24 -0400
committerXe Iaso <me@xeiaso.net>2024-05-24 22:07:24 -0400
commit36104610fe4bdf53e659de02a8a1e050aeabd50e (patch)
tree6a0b87b334f9dce20cbba7e395b7974b2d5c7ee4 /cmd/x
parentc8ad642f2ec4c2a04ddc7c214da94dcf42c19f5b (diff)
downloadx-36104610fe4bdf53e659de02a8a1e050aeabd50e.tar.xz
x-36104610fe4bdf53e659de02a8a1e050aeabd50e.zip
cmd/x: more fancy switch command
Signed-off-by: Xe Iaso <me@xeiaso.net>
Diffstat (limited to 'cmd/x')
-rw-r--r--cmd/x/mi.go39
1 files changed, 38 insertions, 1 deletions
diff --git a/cmd/x/mi.go b/cmd/x/mi.go
index 24bd2b4..ba183ff 100644
--- a/cmd/x/mi.go
+++ b/cmd/x/mi.go
@@ -70,12 +70,49 @@ func (s *miSwitch) SetFlags(f *flag.FlagSet) {
func (s *miSwitch) Execute(ctx context.Context, f *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus {
cli := mi.NewSwitchTrackerProtobufClient(*miURL, http.DefaultClient)
- _, err := cli.Switch(ctx, &mi.SwitchReq{MemberName: s.member})
+ if s.member == "" {
+ s.member = prompt.Input("Member to switch to: ", func(d prompt.Document) []prompt.Suggest {
+ s := []prompt.Suggest{
+ {Text: "Cadey"},
+ {Text: "Nicole"},
+ {Text: "Jessie"},
+ {Text: "Ashe"},
+ {Text: "Sephie"},
+ {Text: "Mai"},
+ }
+ return prompt.FilterHasPrefix(s, d.GetWordBeforeCursor(), true)
+ })
+ }
+
+ sr := &mi.SwitchReq{MemberName: s.member}
+
+ if err := sr.Valid(); err != nil {
+ fmt.Printf("error: %v\n", err)
+ return subcommands.ExitFailure
+ }
+
+ members, err := cli.Members(ctx, &emptypb.Empty{})
if err != nil {
fmt.Printf("error: %v\n", err)
return subcommands.ExitFailure
}
+ sw, err := cli.Switch(ctx, sr)
+ if err != nil {
+ fmt.Printf("error: %v\n", err)
+ return subcommands.ExitFailure
+ }
+
+ var oldMember string
+ for _, m := range members.Members {
+ if m.Id == sw.Old.MemberId {
+ oldMember = m.Name
+ break
+ }
+ }
+
+ fmt.Printf("switched from %s to %s\n", oldMember, s.member)
+
return subcommands.ExitSuccess
}