github.com/joey-fossa/fossa-cli@v0.7.34-0.20190708193710-569f1e8679f0/analyzers/golang/cache.go (about)

     1  package golang
     2  
     3  import "github.com/fossas/fossa-cli/analyzers/golang/resolver"
     4  
     5  // ResolverFromLockfile loads and caches lockfile resolvers.
     6  func (a *Analyzer) ResolverFromLockfile(tool resolver.Type, dir string) (resolver.Resolver, error) {
     7  	// Look up resolver in the cache.
     8  	key := string(tool) + "__fossa-cli-golang-resolver-cache-key__" + dir
     9  	cached, ok := a.resolverCache[key]
    10  	if ok {
    11  		return cached, nil
    12  	}
    13  
    14  	// If not found, construct a new resolver.
    15  	r, err := resolver.FromLockfile(tool, dir)
    16  	if err != nil {
    17  		return nil, err
    18  	}
    19  
    20  	// Cache the resolver.
    21  	a.resolverCache[key] = r
    22  	return r, nil
    23  }