示例#1
0
文件: env.go 项目: pombredanne/dep
func (env *Environment) Dump() (all []*gdf.Package, err error) {
	var allP []*dbPkg
	allP, err = env.db.GetAllPackages()

	if err != nil {
		return
	}

	var allI []*imp
	allI, err = env.db.GetAllImports()

	if err != nil {
		return
	}
	pkgImports := map[string]map[string]string{}

	for _, dbI := range allI {
		_, exists := pkgImports[dbI.Package]
		if !exists {
			pkgImports[dbI.Package] = map[string]string{}
		}
		pkgImports[dbI.Package][dbI.Import+"."+dbI.Name] = dbI.Value
	}

	var allE []*exp
	allE, err = env.db.GetAllExports()

	if err != nil {
		return
	}
	pkgExports := map[string]map[string]string{}

	for _, dbE := range allE {
		_, exists := pkgExports[dbE.Package]
		if !exists {
			pkgExports[dbE.Package] = map[string]string{}
		}
		pkgExports[dbE.Package][dbE.Name] = dbE.Value
	}

	all = make([]*gdf.Package, len(allP))

	for i, p := range allP {
		pkg := gdf.Package{}
		pkg.Path = p.Package
		pkgImp, hasImp := pkgImports[p.Package]
		if !hasImp {
			pkgImp = map[string]string{}
		}
		pkg.Imports = pkgImp

		pkgExp, hasExp := pkgExports[p.Package]
		if !hasExp {
			pkgExp = map[string]string{}
		}
		pkg.Exports = pkgExp
		all[i] = &pkg
	}
	return
}