github.com/buildpacks/pack@v0.33.3-0.20240516162812-884dd1837311/pkg/client/yank_buildpack.go (about) 1 package client 2 3 import ( 4 "net/url" 5 "runtime" 6 7 "github.com/buildpacks/pack/internal/registry" 8 ) 9 10 // YankBuildpackOptions is a configuration struct that controls the Yanking a buildpack 11 // from the Buildpack Registry. 12 type YankBuildpackOptions struct { 13 ID string 14 Version string 15 Type string 16 URL string 17 Yank bool 18 } 19 20 // YankBuildpack marks a buildpack on the Buildpack Registry as 'yanked'. This forbids future 21 // builds from using it. 22 func (c *Client) YankBuildpack(opts YankBuildpackOptions) error { 23 namespace, name, err := registry.ParseNamespaceName(opts.ID) 24 if err != nil { 25 return err 26 } 27 issueURL, err := registry.GetIssueURL(opts.URL) 28 if err != nil { 29 return err 30 } 31 32 buildpack := registry.Buildpack{ 33 Namespace: namespace, 34 Name: name, 35 Version: opts.Version, 36 Yanked: opts.Yank, 37 } 38 39 issue, err := registry.CreateGithubIssue(buildpack) 40 if err != nil { 41 return err 42 } 43 44 params := url.Values{} 45 params.Add("title", issue.Title) 46 params.Add("body", issue.Body) 47 issueURL.RawQuery = params.Encode() 48 49 c.logger.Debugf("Open URL in browser: %s", issueURL) 50 cmd, err := registry.CreateBrowserCmd(issueURL.String(), runtime.GOOS) 51 if err != nil { 52 return err 53 } 54 55 return cmd.Start() 56 }