github.com/stevenshuang/glide@v0.13.3/action/import_gb.go (about) 1 package action 2 3 import ( 4 "github.com/Masterminds/glide/cfg" 5 "github.com/Masterminds/glide/gb" 6 "github.com/Masterminds/glide/msg" 7 gpath "github.com/Masterminds/glide/path" 8 ) 9 10 // ImportGB imports GB dependencies into the present glide config. 11 func ImportGB(dest string) { 12 base := "." 13 config := EnsureConfig() 14 if !gb.Has(base) { 15 msg.Die("There is no GB manifest to import.") 16 } 17 deps, err := gb.Parse(base) 18 if err != nil { 19 msg.Die("Failed to extract GB manifest: %s", err) 20 } 21 appendImports(deps, config) 22 writeConfigToFileOrStdout(config, dest) 23 } 24 25 func appendImports(deps []*cfg.Dependency, config *cfg.Config) { 26 if len(deps) == 0 { 27 msg.Info("No dependencies added.") 28 return 29 } 30 31 //Append deps to existing dependencies. 32 if err := config.AddImport(deps...); err != nil { 33 msg.Die("Failed to add imports: %s", err) 34 } 35 } 36 37 // writeConfigToFileOrStdout is a convenience function for import utils. 38 func writeConfigToFileOrStdout(config *cfg.Config, dest string) { 39 if dest != "" { 40 if err := config.WriteFile(dest); err != nil { 41 msg.Die("Failed to write %s: %s", gpath.GlideFile, err) 42 } 43 } else { 44 o, err := config.Marshal() 45 if err != nil { 46 msg.Die("Error encoding config: %s", err) 47 } 48 msg.Default.Stdout.Write(o) 49 } 50 }