github.com/andrewlunde/glide@v0.20.1/importer/importer.go (about) 1 // Package importer imports dependency configuration from Glide, Godep, GPM, GB and gom 2 package importer 3 4 import ( 5 "io/ioutil" 6 "os" 7 "path/filepath" 8 9 "github.com/andrewlunde/glide/cfg" 10 "github.com/andrewlunde/glide/gb" 11 "github.com/andrewlunde/glide/godep" 12 "github.com/andrewlunde/glide/gom" 13 "github.com/andrewlunde/glide/gpm" 14 ) 15 16 var i = &DefaultImporter{} 17 18 // Import uses the DefaultImporter to import from Glide, Godep, GPM, GB and gom. 19 func Import(path string) (bool, []*cfg.Dependency, error) { 20 return i.Import(path) 21 } 22 23 // Importer enables importing depenency configuration. 24 type Importer interface { 25 26 // Import imports dependency configuration. It returns: 27 // - A bool if any configuration was found. 28 // - []*cfg.Dependency containing dependency configuration if any is found. 29 // - An error if one was reported. 30 Import(path string) (bool, []*cfg.Dependency, error) 31 } 32 33 // DefaultImporter imports from Glide, Godep, GPM, GB and gom. 34 type DefaultImporter struct{} 35 36 // Import tries to import configuration from Glide, Godep, GPM, GB and gom. 37 func (d *DefaultImporter) Import(path string) (bool, []*cfg.Dependency, error) { 38 39 // Try importing from Glide first. 40 p := filepath.Join(path, "glide.yaml") 41 if _, err := os.Stat(p); err == nil { 42 // We found glide configuration. 43 yml, err := ioutil.ReadFile(p) 44 if err != nil { 45 return false, []*cfg.Dependency{}, err 46 } 47 conf, err := cfg.ConfigFromYaml(yml) 48 if err != nil { 49 return false, []*cfg.Dependency{}, err 50 } 51 return true, conf.Imports, nil 52 } 53 54 // Try importing from Godep 55 if godep.Has(path) { 56 deps, err := godep.Parse(path) 57 if err != nil { 58 return false, []*cfg.Dependency{}, err 59 } 60 return true, deps, nil 61 } 62 63 // Try importing from GPM 64 if gpm.Has(path) { 65 deps, err := gpm.Parse(path) 66 if err != nil { 67 return false, []*cfg.Dependency{}, err 68 } 69 return true, deps, nil 70 } 71 72 // Try importin from GB 73 if gb.Has(path) { 74 deps, err := gb.Parse(path) 75 if err != nil { 76 return false, []*cfg.Dependency{}, err 77 } 78 return true, deps, nil 79 } 80 81 // Try importing from gom 82 if gom.Has(path) { 83 deps, err := gom.Parse(path) 84 if err != nil { 85 return false, []*cfg.Dependency{}, err 86 } 87 return true, deps, nil 88 } 89 90 // When none are found. 91 return false, []*cfg.Dependency{}, nil 92 }