package morph import ( "context" "errors" "fmt" "io" "net/http" "strings" "github.com/google/go-github/v39/github" "github.com/spf13/cobra" ) func downloadContractsFromGithub(cmd *cobra.Command) (io.ReadCloser, error) { gcl := github.NewClient(nil) release, _, err := gcl.Repositories.GetLatestRelease(context.Background(), "nspcc-dev", "frostfs-contract") if err != nil { return nil, fmt.Errorf("can't fetch release info: %w", err) } cmd.Printf("Found %s (%s), downloading...\n", release.GetTagName(), release.GetName()) var url string for _, a := range release.Assets { if strings.HasPrefix(a.GetName(), "frostfs-contract") { url = a.GetBrowserDownloadURL() break } } if url == "" { return nil, errors.New("can't find contracts archive in release assets") } resp, err := http.Get(url) if err != nil { return nil, fmt.Errorf("can't fetch contracts archive: %w", err) } return resp.Body, nil }