func getSource()

in internal/aws/source.go [168:191]


func getSource(ctx context.Context, artifactName string, availableArtifacts []Artifact) (artifact.Source, error) {
	for _, releaseArtifact := range availableArtifacts {
		if releaseArtifact.Name == artifactName && releaseArtifact.Arch == runtime.GOARCH && releaseArtifact.OS == runtime.GOOS {
			obj, err := util.GetHttpFileReader(ctx, releaseArtifact.URI)
			if err != nil {
				return nil, fmt.Errorf("getting artifact file reader: %w", err)
			}

			artifactChecksum, err := util.GetHttpFile(ctx, releaseArtifact.ChecksumURI)
			if err != nil {
				obj.Close()
				return nil, fmt.Errorf("getting artifact checksum file reader: %w", err)
			}

			source, err := artifact.WithChecksum(obj, sha256.New(), artifactChecksum)
			if err != nil {
				obj.Close()
				return nil, fmt.Errorf("getting artifact with checksum: %w", err)
			}
			return source, nil
		}
	}
	return nil, fmt.Errorf("could not find artifact for %s arch and %s os", runtime.GOARCH, runtime.GOOS)
}