|  | // Package importer imports dependency configuration from Glide, Godep, GPM, and GB | 
|  | package importer | 
|  |  | 
|  | import ( | 
|  | "io/ioutil" | 
|  | "os" | 
|  | "path/filepath" | 
|  |  | 
|  | "github.com/Masterminds/glide/cfg" | 
|  | "github.com/Masterminds/glide/gb" | 
|  | "github.com/Masterminds/glide/godep" | 
|  | "github.com/Masterminds/glide/gpm" | 
|  | ) | 
|  |  | 
|  | var i = &DefaultImporter{} | 
|  |  | 
|  | // Import uses the DefaultImporter to import from Glide, Godep, GPM, and GB. | 
|  | func Import(path string) (bool, []*cfg.Dependency, error) { | 
|  | return i.Import(path) | 
|  | } | 
|  |  | 
|  | // Importer enables importing depenency configuration. | 
|  | type Importer interface { | 
|  |  | 
|  | // Import imports dependency configuration. It returns: | 
|  | // - A bool if any configuration was found. | 
|  | // - []*cfg.Dependency containing dependency configuration if any is found. | 
|  | // - An error if one was reported. | 
|  | Import(path string) (bool, []*cfg.Dependency, error) | 
|  | } | 
|  |  | 
|  | // DefaultImporter imports from Glide, Godep, GPM, and GB. | 
|  | type DefaultImporter struct{} | 
|  |  | 
|  | // Import tries to import configuration from Glide, Godep, GPM, and GB. | 
|  | func (d *DefaultImporter) Import(path string) (bool, []*cfg.Dependency, error) { | 
|  |  | 
|  | // Try importing from Glide first. | 
|  | p := filepath.Join(path, "glide.yaml") | 
|  | if _, err := os.Stat(p); err == nil { | 
|  | // We found glide configuration. | 
|  | yml, err := ioutil.ReadFile(p) | 
|  | if err != nil { | 
|  | return false, []*cfg.Dependency{}, err | 
|  | } | 
|  | conf, err := cfg.ConfigFromYaml(yml) | 
|  | if err != nil { | 
|  | return false, []*cfg.Dependency{}, err | 
|  | } | 
|  | return true, conf.Imports, nil | 
|  | } | 
|  |  | 
|  | // Try importing from Godep | 
|  | if godep.Has(path) { | 
|  | deps, err := godep.Parse(path) | 
|  | if err != nil { | 
|  | return false, []*cfg.Dependency{}, err | 
|  | } | 
|  | return true, deps, nil | 
|  | } | 
|  |  | 
|  | // Try importing from GPM | 
|  | if gpm.Has(path) { | 
|  | deps, err := gpm.Parse(path) | 
|  | if err != nil { | 
|  | return false, []*cfg.Dependency{}, err | 
|  | } | 
|  | return true, deps, nil | 
|  | } | 
|  |  | 
|  | // Try importin from GB | 
|  | if gb.Has(path) { | 
|  | deps, err := gb.Parse(path) | 
|  | if err != nil { | 
|  | return false, []*cfg.Dependency{}, err | 
|  | } | 
|  | return true, deps, nil | 
|  | } | 
|  |  | 
|  | // When none are found. | 
|  | return false, []*cfg.Dependency{}, nil | 
|  | } |