| package action |
| |
| import ( |
| "github.com/Masterminds/glide/cfg" |
| "github.com/Masterminds/glide/gb" |
| "github.com/Masterminds/glide/msg" |
| gpath "github.com/Masterminds/glide/path" |
| ) |
| |
| // ImportGB imports GB dependencies into the present glide config. |
| func ImportGB(dest string) { |
| base := "." |
| config := EnsureConfig() |
| if !gb.Has(base) { |
| msg.Die("There is no GB manifest to import.") |
| } |
| deps, err := gb.Parse(base) |
| if err != nil { |
| msg.Die("Failed to extract GB manifest: %s", err) |
| } |
| appendImports(deps, config) |
| writeConfigToFileOrStdout(config, dest) |
| } |
| |
| func appendImports(deps []*cfg.Dependency, config *cfg.Config) { |
| if len(deps) == 0 { |
| msg.Info("No dependencies added.") |
| return |
| } |
| |
| //Append deps to existing dependencies. |
| if err := config.AddImport(deps...); err != nil { |
| msg.Die("Failed to add imports: %s", err) |
| } |
| } |
| |
| // writeConfigToFileOrStdout is a convenience function for import utils. |
| func writeConfigToFileOrStdout(config *cfg.Config, dest string) { |
| if dest != "" { |
| if err := config.WriteFile(dest); err != nil { |
| msg.Die("Failed to write %s: %s", gpath.GlideFile, err) |
| } |
| } else { |
| o, err := config.Marshal() |
| if err != nil { |
| msg.Die("Error encoding config: %s", err) |
| } |
| msg.Default.Stdout.Write(o) |
| } |
| } |