github.com/joey-fossa/fossa-cli@v0.7.34-0.20190708193710-569f1e8679f0/buildtools/dotnet/project_json.go (about) 1 package dotnet 2 3 import ( 4 "github.com/fossas/fossa-cli/files" 5 "github.com/fossas/fossa-cli/graph" 6 "github.com/fossas/fossa-cli/pkg" 7 ) 8 9 type Project struct { 10 Version string `json:"version"` 11 Dependencies map[string]interface{} `json:"dependencies"` 12 } 13 14 func ProjectGraph(target string) (graph.Deps, error) { 15 var project Project 16 err := files.ReadJSON(&project, target) 17 if err != nil { 18 return graph.Deps{}, err 19 } 20 21 depMap := make(map[pkg.ID]pkg.Package) 22 imports := []pkg.Import{} 23 24 for name, fields := range project.Dependencies { 25 version := "" 26 switch v := fields.(type) { 27 case string: 28 version = v 29 case map[string]interface{}: 30 mapVersion, isString := v["version"].(string) 31 if isString { 32 version = mapVersion 33 } 34 } 35 36 id := pkg.ID{ 37 Type: pkg.NuGet, 38 Name: name, 39 Revision: version, 40 } 41 imports = append(imports, pkg.Import{Target: name, Resolved: id}) 42 depMap[id] = pkg.Package{ID: id} 43 } 44 45 return graph.Deps{ 46 Direct: imports, 47 Transitive: depMap, 48 }, nil 49 }