diff options
| author | Xe Iaso <me@xeiaso.net> | 2024-05-24 22:07:24 -0400 |
|---|---|---|
| committer | Xe Iaso <me@xeiaso.net> | 2024-05-24 22:07:24 -0400 |
| commit | 36104610fe4bdf53e659de02a8a1e050aeabd50e (patch) | |
| tree | 6a0b87b334f9dce20cbba7e395b7974b2d5c7ee4 /cmd/x | |
| parent | c8ad642f2ec4c2a04ddc7c214da94dcf42c19f5b (diff) | |
| download | x-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.go | 39 |
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 } |
