public BdioContent BuildBOMFromMetadata(List <NuGet.PackageReference> packages, PackageMetadataResource metadataResource) { BdioPropertyHelper bdioPropertyHelper = new BdioPropertyHelper(); BdioNodeFactory bdioNodeFactory = new BdioNodeFactory(bdioPropertyHelper); BdioContent bdio = new BdioContent(); // Create bdio bill of materials node BdioBillOfMaterials bdioBillOfMaterials = bdioNodeFactory.CreateBillOfMaterials(HubCodeLocationName, HubProjectName, HubVersionName); // Create bdio project node string projectBdioId = bdioPropertyHelper.CreateBdioId(HubProjectName, HubVersionName); BdioExternalIdentifier projectExternalIdentifier = bdioPropertyHelper.CreateNugetExternalIdentifier(HubProjectName, HubVersionName); // Note: Could be different. Look at config file BdioProject bdioProject = bdioNodeFactory.CreateProject(HubProjectName, HubVersionName, projectBdioId, projectExternalIdentifier); // Create relationships for every bdio node List <BdioNode> bdioComponents = new List <BdioNode>(); foreach (NuGet.PackageReference packageRef in packages) { // Create component node string componentName = packageRef.Id; string componentVersion = packageRef.Version.ToString(); string componentBdioId = bdioPropertyHelper.CreateBdioId(componentName, componentVersion); BdioExternalIdentifier componentExternalIdentifier = bdioPropertyHelper.CreateNugetExternalIdentifier(componentName, componentVersion); BdioComponent component = bdioNodeFactory.CreateComponent(componentName, componentVersion, componentBdioId, componentExternalIdentifier); // Add references List <PackageDependency> packageDependencies = GetPackageDependencies(packageRef, metadataResource); foreach (PackageDependency packageDependency in packageDependencies) { // Create node from dependency info string dependencyName = packageDependency.Id; string dependencyVersion = GetDependencyVersion(packageDependency, packages); string dependencyBdioId = bdioPropertyHelper.CreateBdioId(dependencyName, dependencyVersion); BdioExternalIdentifier dependencyExternalIdentifier = bdioPropertyHelper.CreateNugetExternalIdentifier(dependencyName, dependencyVersion); BdioComponent dependency = bdioNodeFactory.CreateComponent(dependencyName, dependencyVersion, dependencyBdioId, dependencyExternalIdentifier); // Add relationship bdioPropertyHelper.AddRelationship(component, dependency); } bdioComponents.Add(component); } bdio.BillOfMaterials = bdioBillOfMaterials; bdio.Project = bdioProject; bdio.Components = bdioComponents; return(bdio); }
public List <string> CreateFlatList() { // Load the packages.config file into a list of Packages NuGet.PackageReferenceFile configFile = new NuGet.PackageReferenceFile(PackagesConfigPath); List <NuGet.PackageReference> packages = new List <NuGet.PackageReference>(configFile.GetPackageReferences()); BdioPropertyHelper bdioPropertyHelper = new BdioPropertyHelper(); List <string> externalIds = new List <string>(); foreach (NuGet.PackageReference packageReference in packages) { string externalId = bdioPropertyHelper.CreateNugetExternalId(packageReference.Id, packageReference.Version.ToString()); externalIds.Add(externalId); } return(externalIds); }
public void Setup(RestConnection restConnection) { RestConnection = restConnection; // Create required dataservices CodeLocationDataService = new CodeLocationResponseService(RestConnection); ScanSummariesDataService = new ScanSummariesResponseService(RestConnection); DeployBdioDataService = new DeployBdioResponseService(RestConnection); ProjectDataService = new ProjectResponseService(RestConnection); PolicyDataService = new PolicyResponseService(RestConnection); RiskReportDataService = new RiskReportResponseService(RestConnection); ScanStatusDataService = new ScanStatusDataService(RestConnection, Convert.ToInt64(TimeSpan.FromSeconds(Convert.ToDouble(HubScanTimeout)).TotalMilliseconds)); // Set helper properties BdioPropertyHelper bdioPropertyHelper = new BdioPropertyHelper(); BdioId = bdioPropertyHelper.CreateBdioId(HubProjectName, HubVersionName); }
public void Setup() { string projectDirectory = Directory.GetParent(ProjectPath).FullName; if (String.IsNullOrWhiteSpace(PackagesConfigPath)) { PackagesConfigPath = CreateProjectPackageConfigPath(projectDirectory); } if (!String.IsNullOrWhiteSpace(HubUrl.Trim())) { // Estabilish authenticated connection HubServerConfig hubServerConfig = BuildHubServerConfig(); RestConnection restConnection = new CredentialsResetConnection(hubServerConfig); Setup(restConnection); } if (String.IsNullOrWhiteSpace(OutputDirectory)) { string currentDirectory = Directory.GetCurrentDirectory(); OutputDirectory = $"{currentDirectory}{Path.DirectorySeparatorChar}{DEFAULT_OUTPUT_DIRECTORY}"; } if (String.IsNullOrWhiteSpace(HubProjectName)) { HubProjectName = Path.GetFileNameWithoutExtension(ProjectPath); } if (String.IsNullOrWhiteSpace(HubVersionName)) { HubVersionName = GetProjectAssemblyVersion(projectDirectory); } // Set helper properties BdioPropertyHelper bdioPropertyHelper = new BdioPropertyHelper(); BdioId = bdioPropertyHelper.CreateBdioId(HubProjectName, HubVersionName); }
private void GenerateMergedFile(List <BdioNode> components) { BdioPropertyHelper bdioPropertyHelper = new BdioPropertyHelper(); BdioNodeFactory bdioNodeFactory = new BdioNodeFactory(bdioPropertyHelper); BdioContent bdio = new BdioContent(); // solutions do not have project names or versions by default string projectName = HubProjectName; string versionName = HubVersionName; if (String.IsNullOrWhiteSpace(projectName)) { projectName = Path.GetFileNameWithoutExtension(SolutionPath); } if (String.IsNullOrWhiteSpace(versionName)) { versionName = DateTime.UtcNow.ToString(ProjectGenerator.DEFAULT_DATETIME_FORMAT); } // Create bdio bill of materials node BdioBillOfMaterials bdioBillOfMaterials = bdioNodeFactory.CreateBillOfMaterials(HubCodeLocationName, projectName, versionName); // Create bdio project node string projectBdioId = bdioPropertyHelper.CreateBdioId(projectName, versionName); BdioExternalIdentifier projectExternalIdentifier = bdioPropertyHelper.CreateNugetExternalIdentifier(projectName, versionName); // Note: Could be different. Look at config file BdioProject bdioProject = bdioNodeFactory.CreateProject(projectName, versionName, projectBdioId, projectExternalIdentifier); bdio.BillOfMaterials = bdioBillOfMaterials; bdio.Project = bdioProject; bdio.Components = components; string bdioFilePath = Path.Combine(OutputDirectory, $"{projectName}.jsonld"); File.WriteAllText(bdioFilePath, bdio.ToString()); }