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  }