MCPcopy Index your code
hub / github.com/cloudfoundry/cli / Execute

Method Execute

cf/commands/buildpack/create_buildpack.go:67–113  ·  view source on GitHub ↗
(c flags.FlagContext)

Source from the content-addressed store, hash-verified

65}
66
67func (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
115func (cmd CreateBuildpack) createBuildpack(buildpackName string, c flags.FlagContext) (buildpack models.Buildpack, apiErr error) {
116 position, err := strconv.Atoi(c.Args()[2])

Callers

nothing calls this directly

Calls 11

createBuildpackMethod · 0.95
EntityNameColorFunction · 0.92
CommandColorFunction · 0.92
ArgsMethod · 0.65
WarnMethod · 0.65
SayMethod · 0.65
ErrorCodeMethod · 0.65
OkMethod · 0.65
UploadBuildpackMethod · 0.65
ErrorMethod · 0.65

Tested by

no test coverage detected