func()

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
}