github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/command/v7/rename_command.go (about)

     1  package v7
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/sharedaction"
     5  	"code.cloudfoundry.org/cli/actor/v7action"
     6  	"code.cloudfoundry.org/cli/command"
     7  	"code.cloudfoundry.org/cli/command/flag"
     8  	"code.cloudfoundry.org/cli/command/v7/shared"
     9  	"code.cloudfoundry.org/clock"
    10  )
    11  
    12  //go:generate counterfeiter . RenameActor
    13  
    14  type RenameActor interface {
    15  	RenameApplicationByNameAndSpaceGUID(oldAppName, newAppName, spaceGUID string) (v7action.Application, v7action.Warnings, error)
    16  }
    17  
    18  type RenameCommand struct {
    19  	RequiredArgs    flag.Rename `positional-args:"yes"`
    20  	usage           interface{} `usage:"CF_NAME rename APP_NAME NEW_APP_NAME"`
    21  	relatedCommands interface{} `related_commands:"apps, delete"`
    22  	UI              command.UI
    23  	Config          command.Config
    24  	SharedActor     command.SharedActor
    25  	Actor           RenameActor
    26  }
    27  
    28  func (cmd *RenameCommand) Setup(config command.Config, ui command.UI) error {
    29  	cmd.Config = config
    30  	cmd.UI = ui
    31  	sharedActor := sharedaction.NewActor(config)
    32  	cmd.SharedActor = sharedActor
    33  
    34  	ccClient, uaaClient, err := shared.GetNewClientsAndConnectToCF(config, ui, "")
    35  	if err != nil {
    36  		return err
    37  	}
    38  	cmd.Actor = v7action.NewActor(ccClient, config, sharedActor, uaaClient, clock.NewClock())
    39  
    40  	return nil
    41  }
    42  
    43  func (cmd RenameCommand) Execute(args []string) error {
    44  	err := cmd.SharedActor.CheckTarget(true, true)
    45  	if err != nil {
    46  		return err
    47  	}
    48  	user, err := cmd.Config.CurrentUser()
    49  	if err != nil {
    50  		return err
    51  	}
    52  	oldName, newName := cmd.RequiredArgs.OldAppName, cmd.RequiredArgs.NewAppName
    53  	cmd.UI.DisplayTextWithFlavor(
    54  		"Renaming app {{.OldAppName}} to {{.NewAppName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.Username}}...",
    55  		map[string]interface{}{
    56  			"OldAppName": oldName,
    57  			"NewAppName": newName,
    58  			"Username":   user.Name,
    59  			"OrgName":    cmd.Config.TargetedOrganization().Name,
    60  			"SpaceName":  cmd.Config.TargetedSpace().Name,
    61  		},
    62  	)
    63  
    64  	_, warnings, err := cmd.Actor.RenameApplicationByNameAndSpaceGUID(oldName, newName, cmd.Config.TargetedSpace().GUID)
    65  	cmd.UI.DisplayWarnings(warnings)
    66  	if err != nil {
    67  		return err
    68  	}
    69  	cmd.UI.DisplayOK()
    70  	return nil
    71  }