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 }