github.com/arunkumar7540/cli@v6.45.0+incompatible/command/v7/delete_label_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/cf/errors" 7 "code.cloudfoundry.org/cli/command" 8 "code.cloudfoundry.org/cli/command/flag" 9 "code.cloudfoundry.org/cli/command/v7/shared" 10 "code.cloudfoundry.org/cli/types" 11 ) 12 13 //go:generate counterfeiter . DeleteLabelActor 14 15 type DeleteLabelActor interface { 16 UpdateApplicationLabelsByApplicationName(string, string, map[string]types.NullString) (v7action.Warnings, error) 17 UpdateOrganizationLabelsByOrganizationName(string, map[string]types.NullString) (v7action.Warnings, error) 18 } 19 20 type DeleteLabelCommand struct { 21 RequiredArgs flag.DeleteLabelArgs `positional-args:"yes"` 22 usage interface{} `usage:"CF_NAME delete-label RESOURCE RESOURCE_NAME KEY\n\nEXAMPLES:\n cf delete-label app dora ci_signature_sha2\n\nRESOURCES:\n app\n\nSEE ALSO:\n set-label, labels"` 23 UI command.UI 24 Config command.Config 25 SharedActor command.SharedActor 26 Actor DeleteLabelActor 27 } 28 29 func (cmd *DeleteLabelCommand) Setup(config command.Config, ui command.UI) error { 30 cmd.UI = ui 31 cmd.Config = config 32 cmd.SharedActor = sharedaction.NewActor(config) 33 ccClient, _, err := shared.NewClients(config, ui, true, "") 34 if err != nil { 35 return err 36 } 37 cmd.Actor = v7action.NewActor(ccClient, config, nil, nil) 38 return nil 39 } 40 41 func (cmd DeleteLabelCommand) Execute(args []string) error { 42 user, err := cmd.Config.CurrentUser() 43 if err != nil { 44 return err 45 } 46 47 labels := make(map[string]types.NullString) 48 for _, value := range cmd.RequiredArgs.LabelKeys { 49 labels[value] = types.NewNullString() 50 } 51 52 switch ResourceType(cmd.RequiredArgs.ResourceType) { 53 case App: 54 err = cmd.executeApp(user.Name, labels) 55 case Org: 56 err = cmd.executeOrg(user.Name, labels) 57 default: 58 err = errors.New(cmd.UI.TranslateText("Unsupported resource type of '{{.ResourceType}}'", map[string]interface{}{"ResourceType": cmd.RequiredArgs.ResourceType})) 59 } 60 61 if err != nil { 62 return err 63 } 64 65 cmd.UI.DisplayOK() 66 return nil 67 } 68 69 func (cmd DeleteLabelCommand) executeApp(username string, labels map[string]types.NullString) error { 70 err := cmd.SharedActor.CheckTarget(true, true) 71 if err != nil { 72 return err 73 } 74 75 cmd.UI.DisplayTextWithFlavor("Deleting label(s) for app {{.ResourceName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.User}}...", map[string]interface{}{ 76 "ResourceName": cmd.RequiredArgs.ResourceName, 77 "OrgName": cmd.Config.TargetedOrganization().Name, 78 "SpaceName": cmd.Config.TargetedSpace().Name, 79 "User": username, 80 }) 81 82 warnings, err := cmd.Actor.UpdateApplicationLabelsByApplicationName(cmd.RequiredArgs.ResourceName, cmd.Config.TargetedSpace().GUID, labels) 83 84 cmd.UI.DisplayWarnings(warnings) 85 86 return err 87 } 88 89 func (cmd DeleteLabelCommand) executeOrg(username string, labels map[string]types.NullString) error { 90 err := cmd.SharedActor.CheckTarget(false, false) 91 if err != nil { 92 return err 93 } 94 95 cmd.UI.DisplayTextWithFlavor("Deleting label(s) for org {{.ResourceName}} as {{.User}}...", map[string]interface{}{ 96 "ResourceName": cmd.RequiredArgs.ResourceName, 97 "User": username, 98 }) 99 100 warnings, err := cmd.Actor.UpdateOrganizationLabelsByOrganizationName(cmd.RequiredArgs.ResourceName, labels) 101 102 cmd.UI.DisplayWarnings(warnings) 103 104 return err 105 }