github.com/osievert/jfrog-cli-core@v1.2.7/artifactory/utils/dotnet/solution/project/project.go (about) 1 package project 2 3 import ( 4 "encoding/json" 5 "github.com/jfrog/jfrog-cli-core/artifactory/utils/dependenciestree" 6 "github.com/jfrog/jfrog-cli-core/artifactory/utils/dotnet/dependencies" 7 ) 8 9 type Project interface { 10 Name() string 11 MarshalJSON() ([]byte, error) 12 Extractor() dependencies.Extractor 13 CreateDependencyTree() error 14 } 15 16 func Load(name, rootPath, dependenciesSource string) (Project, error) { 17 var err error 18 project := &project{name: name, rootPath: rootPath, dependenciesSource: dependenciesSource} 19 project.extractor, err = project.getCompatibleExtractor() 20 return project, err 21 } 22 23 func (project *project) getCompatibleExtractor() (dependencies.Extractor, error) { 24 extractor, err := dependencies.CreateCompatibleExtractor(project.name, project.dependenciesSource) 25 return extractor, err 26 } 27 28 func (project *project) CreateDependencyTree() error { 29 var err error 30 project.dependencyTree, err = dependencies.CreateDependencyTree(project.extractor) 31 return err 32 } 33 34 type project struct { 35 name string 36 rootPath string 37 dependenciesSource string 38 dependencyTree dependenciestree.Tree 39 extractor dependencies.Extractor 40 } 41 42 func (project *project) Name() string { 43 return project.name 44 } 45 46 func (project *project) Extractor() dependencies.Extractor { 47 return project.extractor 48 } 49 50 func (project *project) MarshalJSON() ([]byte, error) { 51 return json.Marshal(&struct { 52 Name string `json:"name,omitempty"` 53 Dependencies dependenciestree.Tree `json:"dependencies,omitempty"` 54 }{ 55 Name: project.name, 56 Dependencies: project.dependencyTree, 57 }) 58 }