github.com/paketo-buildpacks/packit@v1.3.2-0.20211206231111-86b75c657449/postal/internal/dependency_mappings.go (about) 1 package internal 2 3 import ( 4 "fmt" 5 "github.com/paketo-buildpacks/packit/servicebindings" 6 ) 7 8 //go:generate faux --interface BindingResolver --output fakes/binding_resolver.go 9 type BindingResolver interface { 10 Resolve(typ, provider, platformDir string) ([]servicebindings.Binding, error) 11 } 12 13 type DependencyMappingResolver struct { 14 bindingResolver BindingResolver 15 } 16 17 func NewDependencyMappingResolver(bindingResolver BindingResolver) DependencyMappingResolver { 18 return DependencyMappingResolver{ 19 bindingResolver: bindingResolver, 20 } 21 } 22 23 // FindDependencyMapping looks up if there is a matching dependency mapping 24 func (d DependencyMappingResolver) FindDependencyMapping(sha256, platformDir string) (string, error) { 25 bindings, err := d.bindingResolver.Resolve("dependency-mapping", "", platformDir) 26 if err != nil { 27 return "", fmt.Errorf("failed to resolve 'dependency-mapping' binding: %w", err) 28 } 29 30 for _, binding := range bindings { 31 if uri, ok := binding.Entries[sha256]; ok { 32 return uri.ReadString() 33 } 34 } 35 36 return "", nil 37 }