// ShortTypeToDownloadURLs converts a github URL into downloadable URL from github. // Input must be of the type and is assumed to have been validated before this call: // github.com/owner/repo/qualifier/type:version // for example: // github.com/kubernetes/application-dm-templates/storage/redis:v1 func ShortTypeToDownloadURLs(rp RegistryProvider, t string) ([]string, Registry, error) { m := TemplateRegistryMatcher.FindStringSubmatch(t) if len(m) != 6 { return nil, nil, fmt.Errorf("cannot parse short github url: %s", t) } r, err := rp.GetRegistryByShortURL(t) if err != nil { return nil, nil, err } if r == nil { panic(fmt.Errorf("cannot get github registry for %s", t)) } tt, err := NewType(m[3], m[4], m[5]) if err != nil { return nil, r, err } urls, err := r.GetDownloadURLs(tt) if err != nil { return nil, r, err } return util.ConvertURLsToStrings(urls), r, err }
// ShortTypeToGCSDownloadUrls returns the download URLs for a short type name. func ShortTypeToGCSDownloadUrls(rp RegistryProvider, t string) ([]string, Registry, error) { m := GCSRegistryMatcher.FindStringSubmatch(t) if len(m) != 3 { return nil, nil, fmt.Errorf("Failed to parse short gs url: %s", t) } r, err := rp.GetRegistryByShortURL(t) if err != nil { return nil, nil, err } tt, err := NewType(m[1], m[2], "") if err != nil { return nil, r, err } urls, err := r.GetDownloadURLs(tt) if err != nil { return nil, r, err } return util.ConvertURLsToStrings(urls), r, err }
// ShortTypeToPackageDownloadURLs converts a github URL into downloadable URLs from github. // Input must be of the type and is assumed to have been validated before this call: // github.com/owner/repo/type // for example: // github.com/helm/charts/cassandra func ShortTypeToPackageDownloadURLs(rp RegistryProvider, t string) ([]string, error) { m := PackageRegistryMatcher.FindStringSubmatch(t) if len(m) != 4 { return nil, fmt.Errorf("Failed to parse short github url: %s", t) } r, err := rp.GetRegistryByShortURL(t) if err != nil { return nil, err } tt, err := NewType("", m[3], "") if err != nil { return nil, err } urls, err := r.GetDownloadURLs(tt) if err != nil { return nil, err } return util.ConvertURLsToStrings(urls), err }