in cmd/resource/utils.go [426:466]
func (c *Clients) downloadChart(ur, f string, username, password *string) error {
u, err := url.Parse(ur)
if err != nil {
return genericError("Process url", err)
}
switch {
case strings.ToLower(u.Scheme) == "s3":
bucket := u.Host
key := strings.TrimLeft(u.Path, "/")
region, err := getBucketRegion(c.AWSClients.S3Client(nil, nil), bucket)
if err != nil {
return err
}
err = downloadS3(c.AWSClients.S3Client(region, nil), bucket, key, f)
if err != nil {
return err
}
case strings.ToLower(u.Scheme) == "oci":
var ecrRe = regexp.MustCompile(`(?smi)((\d+).dkr.ecr.(\w+-\w+-\d+).amazonaws.com)`)
if ecrRe.MatchString(u.Host) {
// Get region from the ECR endpoint
hostParts := strings.Split(u.Host, ".")
region := aws.String(hostParts[len(hostParts)-3])
username, password, err = getECRLogin(c.AWSClients.ECRClient(region, nil))
if err != nil {
return err
}
}
err = downloadOCI(u.Host, strings.TrimLeft(u.Path, "/"), aws.StringValue(username), aws.StringValue(password), f)
if err != nil {
return err
}
default:
err = downloadHTTP(ur, f, username, password)
if err != nil {
return err
}
}
return nil
}