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 }