github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+incompatible/cf/commands/user/delete_user.go (about)

     1  package user
     2  
     3  import (
     4  	"github.com/cloudfoundry/cli/cf/api"
     5  	"github.com/cloudfoundry/cli/cf/command_metadata"
     6  	"github.com/cloudfoundry/cli/cf/configuration/core_config"
     7  	"github.com/cloudfoundry/cli/cf/errors"
     8  	. "github.com/cloudfoundry/cli/cf/i18n"
     9  	"github.com/cloudfoundry/cli/cf/requirements"
    10  	"github.com/cloudfoundry/cli/cf/terminal"
    11  	"github.com/codegangsta/cli"
    12  )
    13  
    14  type DeleteUser struct {
    15  	ui       terminal.UI
    16  	config   core_config.Reader
    17  	userRepo api.UserRepository
    18  }
    19  
    20  func NewDeleteUser(ui terminal.UI, config core_config.Reader, userRepo api.UserRepository) (cmd DeleteUser) {
    21  	cmd.ui = ui
    22  	cmd.config = config
    23  	cmd.userRepo = userRepo
    24  	return
    25  }
    26  
    27  func (cmd DeleteUser) Metadata() command_metadata.CommandMetadata {
    28  	return command_metadata.CommandMetadata{
    29  		Name:        "delete-user",
    30  		Description: T("Delete a user"),
    31  		Usage:       T("CF_NAME delete-user USERNAME [-f]"),
    32  		Flags: []cli.Flag{
    33  			cli.BoolFlag{Name: "f", Usage: T("Force deletion without confirmation")},
    34  		},
    35  	}
    36  }
    37  
    38  func (cmd DeleteUser) GetRequirements(requirementsFactory requirements.Factory, c *cli.Context) (reqs []requirements.Requirement, err error) {
    39  	if len(c.Args()) != 1 {
    40  		err = errors.New(T("Invalid usage"))
    41  		cmd.ui.FailWithUsage(c)
    42  		return
    43  	}
    44  
    45  	reqs = append(reqs, requirementsFactory.NewLoginRequirement())
    46  
    47  	return
    48  }
    49  
    50  func (cmd DeleteUser) Run(c *cli.Context) {
    51  	username := c.Args()[0]
    52  	force := c.Bool("f")
    53  
    54  	if !force && !cmd.ui.ConfirmDelete(T("user"), username) {
    55  		return
    56  	}
    57  
    58  	cmd.ui.Say(T("Deleting user {{.TargetUser}} as {{.CurrentUser}}...",
    59  		map[string]interface{}{
    60  			"TargetUser":  terminal.EntityNameColor(username),
    61  			"CurrentUser": terminal.EntityNameColor(cmd.config.Username()),
    62  		}))
    63  
    64  	user, apiErr := cmd.userRepo.FindByUsername(username)
    65  	switch apiErr.(type) {
    66  	case nil:
    67  	case *errors.ModelNotFoundError:
    68  		cmd.ui.Ok()
    69  		cmd.ui.Warn(T("User {{.TargetUser}} does not exist.", map[string]interface{}{"TargetUser": username}))
    70  		return
    71  	default:
    72  		cmd.ui.Failed(apiErr.Error())
    73  		return
    74  	}
    75  
    76  	apiErr = cmd.userRepo.Delete(user.Guid)
    77  	if apiErr != nil {
    78  		cmd.ui.Failed(apiErr.Error())
    79  		return
    80  	}
    81  
    82  	cmd.ui.Ok()
    83  }