From 36104610fe4bdf53e659de02a8a1e050aeabd50e Mon Sep 17 00:00:00 2001 From: Xe Iaso Date: Fri, 24 May 2024 22:07:24 -0400 Subject: cmd/x: more fancy switch command Signed-off-by: Xe Iaso --- cmd/x/mi.go | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'cmd/x/mi.go') 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 } -- cgit v1.2.3