// RunClient runs the `keybase prove` subcommand in client/server mode. func (p *CmdProve) Run() error { var cli keybase1.ProveClient var proveUIProtocol rpc.Protocol if p.arg.Auto { ui := &ProveRooterUI{ Contextified: libkb.NewContextified(p.G()), Username: p.arg.Username, } proveUIProtocol = keybase1.ProveUiProtocol(ui) } else { proveUI := ProveUI{parent: GlobUI} p.installOutputHook(&proveUI) proveUIProtocol = keybase1.ProveUiProtocol(proveUI) } protocols := []rpc.Protocol{ proveUIProtocol, NewLoginUIProtocol(p.G()), NewSecretUIProtocol(p.G()), } cli, err := GetProveClient() if err != nil { return err } if err = RegisterProtocols(protocols); err != nil { return err } // command line interface wants the PromptPosted ui loop p.arg.PromptPosted = true _, err = cli.StartProof(context.TODO(), p.arg) return err }
func newProveUIProtocol(ui ProveUI) rpc.Protocol { return keybase1.ProveUiProtocol(ui) }