github.com/rakutentech/cli@v6.12.5-0.20151006231303-24468b65536e+incompatible/cf/commands/route/delete_route.go (about) 1 package route 2 3 import ( 4 "github.com/cloudfoundry/cli/cf/api" 5 "github.com/cloudfoundry/cli/cf/command_registry" 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/cloudfoundry/cli/flags" 12 "github.com/cloudfoundry/cli/flags/flag" 13 ) 14 15 type DeleteRoute struct { 16 ui terminal.UI 17 config core_config.Reader 18 routeRepo api.RouteRepository 19 domainReq requirements.DomainRequirement 20 } 21 22 func init() { 23 command_registry.Register(&DeleteRoute{}) 24 } 25 26 func (cmd *DeleteRoute) MetaData() command_registry.CommandMetadata { 27 fs := make(map[string]flags.FlagSet) 28 fs["f"] = &cliFlags.BoolFlag{Name: "f", Usage: T("Force deletion without confirmation")} 29 fs["n"] = &cliFlags.StringFlag{Name: "n", Usage: T("Hostname")} 30 31 return command_registry.CommandMetadata{ 32 Name: "delete-route", 33 Description: T("Delete a route"), 34 Usage: T("CF_NAME delete-route DOMAIN [-n HOSTNAME] [-f]"), 35 Flags: fs, 36 } 37 } 38 39 func (cmd *DeleteRoute) Requirements(requirementsFactory requirements.Factory, fc flags.FlagContext) (reqs []requirements.Requirement, err error) { 40 if len(fc.Args()) != 1 { 41 cmd.ui.Failed(T("Incorrect Usage. Requires an argument\n\n") + command_registry.Commands.CommandUsage("delete-route")) 42 } 43 44 cmd.domainReq = requirementsFactory.NewDomainRequirement(fc.Args()[0]) 45 46 reqs = []requirements.Requirement{ 47 requirementsFactory.NewLoginRequirement(), 48 cmd.domainReq, 49 } 50 return 51 } 52 53 func (cmd *DeleteRoute) SetDependency(deps command_registry.Dependency, pluginCall bool) command_registry.Command { 54 cmd.ui = deps.Ui 55 cmd.config = deps.Config 56 cmd.routeRepo = deps.RepoLocator.GetRouteRepository() 57 return cmd 58 } 59 60 func (cmd *DeleteRoute) Execute(c flags.FlagContext) { 61 host := c.String("n") 62 domainName := c.Args()[0] 63 64 url := domainName 65 if host != "" { 66 url = host + "." + domainName 67 } 68 if !c.Bool("f") { 69 if !cmd.ui.ConfirmDelete("route", url) { 70 return 71 } 72 } 73 74 cmd.ui.Say(T("Deleting route {{.URL}}...", map[string]interface{}{"URL": terminal.EntityNameColor(url)})) 75 76 domain := cmd.domainReq.GetDomain() 77 route, apiErr := cmd.routeRepo.FindByHostAndDomain(host, domain) 78 79 switch apiErr.(type) { 80 case nil: 81 case *errors.ModelNotFoundError: 82 cmd.ui.Warn(T("Unable to delete, route '{{.URL}}' does not exist.", 83 map[string]interface{}{"URL": url})) 84 return 85 default: 86 cmd.ui.Failed(apiErr.Error()) 87 return 88 } 89 90 apiErr = cmd.routeRepo.Delete(route.Guid) 91 if apiErr != nil { 92 cmd.ui.Failed(apiErr.Error()) 93 return 94 } 95 96 cmd.ui.Ok() 97 }