(c flags.FlagContext)
| 61 | } |
| 62 | |
| 63 | func (cmd *DeleteBuildpack) Execute(c flags.FlagContext) error { |
| 64 | var ( |
| 65 | err error |
| 66 | buildpack models.Buildpack |
| 67 | ) |
| 68 | |
| 69 | buildpackName := c.Args()[0] |
| 70 | stack := c.String("s") |
| 71 | |
| 72 | force := c.Bool("f") |
| 73 | |
| 74 | if !force { |
| 75 | answer := cmd.ui.ConfirmDelete("buildpack", buildpackName) |
| 76 | if !answer { |
| 77 | return nil |
| 78 | } |
| 79 | } |
| 80 | |
| 81 | if stack == "" { |
| 82 | buildpack, err = cmd.buildpackRepo.FindByName(buildpackName) |
| 83 | cmd.ui.Say(T("Deleting buildpack {{.BuildpackName}}...", map[string]interface{}{"BuildpackName": terminal.EntityNameColor(buildpackName)})) |
| 84 | } else { |
| 85 | buildpack, err = cmd.buildpackRepo.FindByNameAndStack(buildpackName, stack) |
| 86 | cmd.ui.Say(T("Deleting buildpack {{.BuildpackName}} with stack {{.Stack}}...", map[string]interface{}{"BuildpackName": terminal.EntityNameColor(buildpackName), "Stack": terminal.EntityNameColor(stack)})) |
| 87 | } |
| 88 | |
| 89 | switch err.(type) { |
| 90 | case nil: // do nothing |
| 91 | case *errors.ModelNotFoundError: |
| 92 | cmd.ui.Ok() |
| 93 | if stack == "" { |
| 94 | cmd.ui.Warn(T("Buildpack {{.BuildpackName}} does not exist.", map[string]interface{}{"BuildpackName": buildpackName})) |
| 95 | } else { |
| 96 | cmd.ui.Warn(T("Buildpack '{{.BuildpackName}}' with stack '{{.Stack}}' not found.", map[string]interface{}{"BuildpackName": buildpackName, "Stack": stack})) |
| 97 | } |
| 98 | return nil |
| 99 | case *errors.AmbiguousModelError: |
| 100 | var err2 error |
| 101 | buildpack, err2 = cmd.buildpackRepo.FindByNameWithNilStack(buildpackName) |
| 102 | if err2 != nil { |
| 103 | return fmt.Errorf("%s Specify the stack (using -s) to disambiguate.", err.Error()) |
| 104 | } |
| 105 | default: |
| 106 | return err |
| 107 | |
| 108 | } |
| 109 | |
| 110 | err = cmd.buildpackRepo.Delete(buildpack.GUID) |
| 111 | if err != nil { |
| 112 | return errors.New(T("Error deleting buildpack {{.Name}}\n{{.Error}}", map[string]interface{}{ |
| 113 | "Name": terminal.EntityNameColor(buildpack.Name), |
| 114 | "Error": err.Error(), |
| 115 | })) |
| 116 | } |
| 117 | |
| 118 | cmd.ui.Ok() |
| 119 | return nil |
| 120 | } |
nothing calls this directly
no test coverage detected