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

     1  package resolver
     2  
     3  import (
     4  	"errors"
     5  	"path/filepath"
     6  
     7  	"github.com/fossas/fossa-cli/buildtools/dep"
     8  	"github.com/fossas/fossa-cli/buildtools/gdm"
     9  	"github.com/fossas/fossa-cli/buildtools/glide"
    10  	"github.com/fossas/fossa-cli/buildtools/godep"
    11  	"github.com/fossas/fossa-cli/buildtools/gomodules"
    12  	"github.com/fossas/fossa-cli/buildtools/govendor"
    13  	"github.com/fossas/fossa-cli/buildtools/vndr"
    14  )
    15  
    16  // Errors from lockfile resolvers.
    17  var (
    18  	ErrResolverNotFound = errors.New("unrecognized Go resolver")
    19  )
    20  
    21  // Lockfile resolvers.
    22  const (
    23  	Dep       = Type("dep")
    24  	Gdm       = Type("gdm")
    25  	Glide     = Type("glide")
    26  	GoModules = Type("gomodules")
    27  	Godep     = Type("godep")
    28  	Govendor  = Type("govendor")
    29  	Vndr      = Type("vndr")
    30  )
    31  
    32  // FromLockfile constructs a resolver from a lockfile and its directory.
    33  func FromLockfile(tool Type, dir string) (Resolver, error) {
    34  	switch tool {
    35  	case GoModules:
    36  		return gomodules.New(dir)
    37  	case Dep:
    38  		return dep.New(filepath.Join(dir, "Gopkg.lock"), filepath.Join(dir, "Gopkg.toml"))
    39  	case Gdm:
    40  		return gdm.New(dir)
    41  	case Glide:
    42  		return glide.New(dir)
    43  	case Godep:
    44  		return godep.New(dir)
    45  	case Govendor:
    46  		return govendor.New(dir)
    47  	case Vndr:
    48  		return vndr.New(dir)
    49  	default:
    50  		return nil, ErrResolverNotFound
    51  	}
    52  }