github.com/jenspinney/cli@v6.42.1-0.20190207184520-7450c600020e+incompatible/command/v6/ssh_code_command.go (about)

     1  package v6
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/sharedaction"
     5  	"code.cloudfoundry.org/cli/actor/v2action"
     6  	"code.cloudfoundry.org/cli/command"
     7  	"code.cloudfoundry.org/cli/command/v6/shared"
     8  )
     9  
    10  //go:generate counterfeiter . SSHCodeActor
    11  
    12  type SSHCodeActor interface {
    13  	GetSSHPasscode() (string, error)
    14  }
    15  
    16  type SSHCodeCommand struct {
    17  	usage           interface{} `usage:"CF_NAME ssh-code"`
    18  	relatedCommands interface{} `related_commands:"curl, ssh"`
    19  
    20  	UI          command.UI
    21  	Config      command.Config
    22  	SharedActor command.SharedActor
    23  	Actor       SSHCodeActor
    24  }
    25  
    26  func (cmd *SSHCodeCommand) Setup(config command.Config, ui command.UI) error {
    27  	cmd.UI = ui
    28  	cmd.Config = config
    29  	cmd.SharedActor = sharedaction.NewActor(config)
    30  
    31  	ccClient, uaaClient, err := shared.NewClients(config, ui, true)
    32  	if err != nil {
    33  		return err
    34  	}
    35  	cmd.Actor = v2action.NewActor(ccClient, uaaClient, config)
    36  
    37  	return nil
    38  }
    39  
    40  func (cmd SSHCodeCommand) Execute(args []string) error {
    41  	err := cmd.SharedActor.CheckTarget(false, false)
    42  	if err != nil {
    43  		return err
    44  	}
    45  
    46  	code, err := cmd.Actor.GetSSHPasscode()
    47  	cmd.UI.DisplayText("{{.SSHCode}}", map[string]interface{}{"SSHCode": code})
    48  	return err
    49  }