public void TestCreatingPypiExternalIds()
        {
            BdioExternalIdentifier actualExternalIdentifier   = BdioPropertyHelper.CreatePypiExternalIdentifier("name", "version");
            BdioExternalIdentifier expectedExternalIdentifier = BdioPropertyHelper.CreateExternalIdentifier("pypi", "name/version");

            Assert.AreEqual(expectedExternalIdentifier.Forge, actualExternalIdentifier.Forge);
            Assert.AreEqual(expectedExternalIdentifier.ExternalId, actualExternalIdentifier.ExternalId);
        }
        public void TestCreatingRubygemsExternalIds()
        {
            BdioExternalIdentifier actualExternalIdentifier   = BdioPropertyHelper.CreateRubygemsExternalIdentifier("name", "version");
            BdioExternalIdentifier expectedExternalIdentifier = BdioPropertyHelper.CreateExternalIdentifier("rubygems", "name=version");

            Assert.AreEqual(expectedExternalIdentifier.Forge, actualExternalIdentifier.Forge);
            Assert.AreEqual(expectedExternalIdentifier.ExternalId, actualExternalIdentifier.ExternalId);
        }
        public BdioExternalIdentifier CreateExternalIdentifier(string forge, string externalId)
        {
            BdioExternalIdentifier externalIdentifier = new BdioExternalIdentifier();

            externalIdentifier.ExternalId = externalId;
            externalIdentifier.Forge      = forge;
            return(externalIdentifier);
        }
        public void TestCreatingMavenExternalIds()
        {
            BdioExternalIdentifier actualExternalIdentifier   = BdioPropertyHelper.CreateMavenExternalIdentifier("group", "artifact", "version");
            BdioExternalIdentifier expectedExternalIdentifier = BdioPropertyHelper.CreateExternalIdentifier("maven", "group:artifact:version");

            Assert.AreEqual(expectedExternalIdentifier.Forge, actualExternalIdentifier.Forge);
            Assert.AreEqual(expectedExternalIdentifier.ExternalId, actualExternalIdentifier.ExternalId);
        }
Пример #5
0
        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);
        }
        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());
        }
        public BdioComponent CreateComponent(string componentName, string componentVersion, string bdioId, BdioExternalIdentifier externalIdentifier)
        {
            BdioComponent component = new BdioComponent();

            component.Id      = bdioId;
            component.Name    = componentName;
            component.Version = componentVersion;
            component.BdioExternalIdentifier = externalIdentifier;
            return(component);
        }
        public BdioComponent CreateComponent(string componentName, string componentVersion, string bdioId, string forge, string externalId)
        {
            BdioExternalIdentifier externalIdentifier = BdioPropertyHelper.CreateExternalIdentifier(forge, externalId);

            return(CreateComponent(componentName, componentVersion, bdioId, externalIdentifier));
        }
        public BdioProject CreateProject(string projectName, string projectVersion, string id, BdioExternalIdentifier externalIdentifier)
        {
            BdioProject project = new BdioProject();

            project.Id      = id;
            project.Name    = projectName;
            project.Version = projectVersion;
            project.BdioExternalIdentifier = externalIdentifier;
            return(project);
        }
Пример #10
0
        public BdioProject CreateProject(string projectName, string projectVersion, string bdioId, string forge, string externalId)
        {
            BdioExternalIdentifier externalIdentifier = BdioPropertyHelper.CreateExternalIdentifier(forge, externalId);

            return(CreateProject(projectName, projectVersion, bdioId, externalIdentifier));
        }