github.com/jenspinney/cli@v6.42.1-0.20190207184520-7450c600020e+incompatible/command/v6/rename_buildpack_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/api/cloudcontroller/ccversion" 7 "code.cloudfoundry.org/cli/command" 8 "code.cloudfoundry.org/cli/command/flag" 9 "code.cloudfoundry.org/cli/command/v6/shared" 10 ) 11 12 //go:generate counterfeiter . RenameBuildpackActor 13 14 type RenameBuildpackActor interface { 15 CloudControllerAPIVersion() string 16 RenameBuildpack(oldName string, newName string, stackName string) (v2action.Warnings, error) 17 } 18 19 type RenameBuildpackCommand struct { 20 RequiredArgs flag.RenameBuildpackArgs `positional-args:"yes"` 21 Stack string `short:"s" description:"Specify which buildpack to rename by stack"` 22 usage interface{} `usage:"CF_NAME rename-buildpack BUILDPACK_NAME NEW_BUILDPACK_NAME [-s STACK]"` 23 relatedCommands interface{} `related_commands:"update-buildpack"` 24 25 UI command.UI 26 Config command.Config 27 SharedActor command.SharedActor 28 Actor RenameBuildpackActor 29 } 30 31 func (cmd *RenameBuildpackCommand) Setup(config command.Config, ui command.UI) error { 32 cmd.UI = ui 33 cmd.Config = config 34 cmd.SharedActor = sharedaction.NewActor(config) 35 36 ccClient, uaaClient, err := shared.NewClients(config, ui, true) 37 if err != nil { 38 return err 39 } 40 cmd.Actor = v2action.NewActor(ccClient, uaaClient, config) 41 42 return nil 43 } 44 45 func (cmd RenameBuildpackCommand) Execute(args []string) error { 46 if err := cmd.SharedActor.CheckTarget(false, false); err != nil { 47 return err 48 } 49 50 user, err := cmd.Config.CurrentUser() 51 if err != nil { 52 return err 53 } 54 55 if cmd.stackSpecified() { 56 err = command.MinimumCCAPIVersionCheck(cmd.Actor.CloudControllerAPIVersion(), ccversion.MinVersionBuildpackStackAssociationV2, "Option '-s'") 57 if err != nil { 58 return err 59 } 60 cmd.UI.DisplayTextWithFlavor("Renaming buildpack {{.OldName}} to {{.NewName}} with stack {{.Stack}} as {{.CurrentUser}}...", map[string]interface{}{ 61 "OldName": cmd.RequiredArgs.OldBuildpackName, 62 "NewName": cmd.RequiredArgs.NewBuildpackName, 63 "Stack": cmd.Stack, 64 "CurrentUser": user.Name, 65 }) 66 } else { 67 cmd.UI.DisplayTextWithFlavor("Renaming buildpack {{.OldName}} to {{.NewName}} as {{.CurrentUser}}...", map[string]interface{}{ 68 "OldName": cmd.RequiredArgs.OldBuildpackName, 69 "NewName": cmd.RequiredArgs.NewBuildpackName, 70 "CurrentUser": user.Name, 71 }) 72 } 73 74 warnings, err := cmd.Actor.RenameBuildpack(cmd.RequiredArgs.OldBuildpackName, cmd.RequiredArgs.NewBuildpackName, cmd.Stack) 75 cmd.UI.DisplayWarnings(warnings) 76 if err != nil { 77 return err 78 } 79 80 cmd.UI.DisplayOK() 81 82 return nil 83 } 84 85 func (cmd RenameBuildpackCommand) stackSpecified() bool { 86 return len(cmd.Stack) > 0 87 }