(c flags.FlagContext)
| 65 | } |
| 66 | |
| 67 | func (cmd *CreateBuildpack) Execute(c flags.FlagContext) error { |
| 68 | buildpackName := c.Args()[0] |
| 69 | |
| 70 | buildpackFile, buildpackFileName, err := cmd.buildpackBitsRepo.CreateBuildpackZipFile(c.Args()[1]) |
| 71 | if err != nil { |
| 72 | cmd.ui.Warn(T("Failed to create a local temporary zip file for the buildpack")) |
| 73 | return err |
| 74 | } |
| 75 | |
| 76 | cmd.ui.Say(T("Creating buildpack {{.BuildpackName}}...", map[string]interface{}{"BuildpackName": terminal.EntityNameColor(buildpackName)})) |
| 77 | |
| 78 | buildpack, err := cmd.createBuildpack(buildpackName, c) |
| 79 | |
| 80 | if err != nil { |
| 81 | if httpErr, ok := err.(errors.HTTPError); ok && httpErr.ErrorCode() == errors.BuildpackNameTaken { |
| 82 | cmd.ui.Ok() |
| 83 | cmd.ui.Warn(T("Buildpack {{.BuildpackName}} already exists", map[string]interface{}{"BuildpackName": buildpackName})) |
| 84 | cmd.ui.Say(T("TIP: use '{{.CfUpdateBuildpackCommand}}' to update this buildpack", map[string]interface{}{"CfUpdateBuildpackCommand": terminal.CommandColor(cf.Name + " " + "update-buildpack")})) |
| 85 | } else if httpErr, ok := err.(errors.HTTPError); ok && httpErr.ErrorCode() == errors.StackUnique { |
| 86 | cmd.ui.Ok() |
| 87 | cmd.ui.Warn(T("Buildpack {{.BuildpackName}} already exists without a stack", map[string]interface{}{"BuildpackName": buildpackName})) |
| 88 | cmd.ui.Say(T("TIP: use '{{.CfDeleteBuildpackCommand}}' to delete buildpack {{.BuildpackName}} without a stack", map[string]interface{}{"CfDeleteBuildpackCommand": terminal.CommandColor(cf.Name + " " + "delete-buildpack"), "BuildpackName": buildpackName})) |
| 89 | } else { |
| 90 | return err |
| 91 | } |
| 92 | return nil |
| 93 | } |
| 94 | cmd.ui.Ok() |
| 95 | cmd.ui.Say("") |
| 96 | |
| 97 | cmd.ui.Say(T("Uploading buildpack {{.BuildpackName}}...", map[string]interface{}{"BuildpackName": terminal.EntityNameColor(buildpackName)})) |
| 98 | |
| 99 | err = cmd.buildpackBitsRepo.UploadBuildpack(buildpack, buildpackFile, buildpackFileName) |
| 100 | if err != nil { |
| 101 | if httpErr, ok := err.(errors.HTTPError); ok && httpErr.ErrorCode() == errors.BuildpackNameStackTaken { |
| 102 | cmd.ui.Ok() |
| 103 | cmd.ui.Warn(httpErr.Error()) |
| 104 | cmd.ui.Say(T("TIP: use '{{.CfUpdateBuildpackCommand}}' to update this buildpack", map[string]interface{}{"CfUpdateBuildpackCommand": terminal.CommandColor(cf.Name + " " + "update-buildpack")})) |
| 105 | } else { |
| 106 | return err |
| 107 | } |
| 108 | return nil |
| 109 | } |
| 110 | |
| 111 | cmd.ui.Ok() |
| 112 | return nil |
| 113 | } |
| 114 | |
| 115 | func (cmd CreateBuildpack) createBuildpack(buildpackName string, c flags.FlagContext) (buildpack models.Buildpack, apiErr error) { |
| 116 | position, err := strconv.Atoi(c.Args()[2]) |
nothing calls this directly
no test coverage detected