Skip to content

Commit

Permalink
Merge branch 'development' into RefactorCode_-PackageUploadHelperCsFile
Browse files Browse the repository at this point in the history
  • Loading branch information
crvreddy authored Feb 5, 2025
2 parents 05ac402 + b675f00 commit bc3eeee
Show file tree
Hide file tree
Showing 7 changed files with 51 additions and 26 deletions.
2 changes: 1 addition & 1 deletion src/LCT.PackageIdentifier.UTest/MavenParserTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ public void ParsePackageFile_PackageLockWithDuplicateComponents_ReturnsCountOfDu

//Assert
Assert.That(bom.Components.Count, Is.EqualTo(1), "Returns the count of components");
Assert.That(bom.Dependencies.Count, Is.EqualTo(2), "Returns the count of dependencies");
Assert.That(bom.Dependencies.Count, Is.EqualTo(1), "Returns the count of dependencies");

}

Expand Down
1 change: 1 addition & 0 deletions src/LCT.PackageIdentifier/ConanProcessor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ public Bom ParsePackageFile(CommonAppSettings appSettings)
}

bom.Components = componentsForBOM;
bom.Dependencies = CommonHelper.RemoveInvalidDependenciesAndReferences(bom.Components, bom.Dependencies);
Logger.Debug($"ParsePackageFile():End");
return bom;
}
Expand Down
2 changes: 1 addition & 1 deletion src/LCT.PackageIdentifier/DebianProcessor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ public Bom ParsePackageFile(CommonAppSettings appSettings)
{
AddSiemensDirectProperty(ref bom);
}

bom.Dependencies = CommonHelper.RemoveInvalidDependenciesAndReferences(bom.Components, bom.Dependencies);
return bom;
}

Expand Down
2 changes: 1 addition & 1 deletion src/LCT.PackageIdentifier/MavenProcessor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ public Bom ParsePackageFile(CommonAppSettings appSettings)
{
AddSiemensDirectProperty(ref bom);
}

bom.Dependencies = CommonHelper.RemoveInvalidDependenciesAndReferences(bom.Components, bom.Dependencies);
return bom;
}

Expand Down
68 changes: 45 additions & 23 deletions src/LCT.PackageIdentifier/NpmProcessor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ public Bom ParsePackageFile(CommonAppSettings appSettings)
bom.Components = componentsForBOM;
bom.Dependencies = dependencies;
bom.Dependencies = bom.Dependencies?.GroupBy(x => new { x.Ref }).Select(y => y.First()).ToList();
bom.Dependencies = CommonHelper.RemoveInvalidDependenciesAndReferences(bom.Components, bom.Dependencies);
Logger.Debug($"ParsePackageFile():End");
return bom;
}
Expand Down Expand Up @@ -204,6 +205,7 @@ private static void GetPackagesForBom(string filepath, ref List<BundledComponent
List<JToken> directDependencies = new List<JToken>();
directDependencies.AddRange(dep);
directDependencies.AddRange(devDep);

foreach (JProperty prop in depencyComponentList.Skip(1))
{
Property isdev = new() { Name = Dataconstant.Cdx_IsDevelopment, Value = "false" };
Expand All @@ -228,27 +230,11 @@ private static void GetPackagesForBom(string filepath, ref List<BundledComponent
}

string folderPath = CommonHelper.TrimEndOfString(filepath, $"\\{FileConstant.PackageLockFileName}");
string packageName=string.Empty;
if (properties[Name] != null)
{
packageName = Convert.ToString(properties[Name]);
}
else
{
packageName = CommonHelper.GetSubstringOfLastOccurance(prop.Name, $"node_modules/");
}

string packageName = GetPackageName(properties, prop);

string componentName = packageName.StartsWith('@') ? packageName.Replace("@", "%40") : packageName;

if (packageName.Contains('@'))
{
components.Group = packageName.Split('/')[0];
components.Name = packageName.Split('/')[1];
}
else
{
components.Name = packageName;
}
SetComponentGroupAndName(components, packageName);

components.Type = Component.Classification.Library;
components.Description = folderPath;
Expand All @@ -268,6 +254,31 @@ private static void GetPackagesForBom(string filepath, ref List<BundledComponent
}
}

private static void SetComponentGroupAndName(Component component, string packageName)
{
if (packageName.Contains('@'))
{
component.Group = packageName.Split('/')[0];
component.Name = packageName.Split('/')[1];
}
else
{
component.Name = packageName;
}
}
private static string GetPackageName(JObject properties, JProperty prop)
{
string packageName;
if (properties[Name] != null)
{
packageName = Convert.ToString(properties[Name]);
}
else
{
packageName = CommonHelper.GetSubstringOfLastOccurance(prop.Name, $"node_modules/");
}
return packageName;
}
public static string GetIsDirect(List<JToken> directDependencies, JProperty prop)
{
string subvalue = CommonHelper.GetSubstringOfLastOccurance(prop.Name, $"node_modules/");
Expand All @@ -282,7 +293,6 @@ public static string GetIsDirect(List<JToken> directDependencies, JProperty prop

return "false";
}

private static void CheckAndAddToBundleComponents(List<BundledComponents> bundledComponents, JProperty prop, Component components)
{
if (prop.Value[Bundled] != null &&
Expand Down Expand Up @@ -553,15 +563,27 @@ public static void GetdependencyDetails(List<Component> componentsForBOM, List<D
List<Dependency> dependencyList = new();

foreach (var component in componentsForBOM)
{
{
if ((component.Author?.Split(",")) != null)
{
List<Dependency> subDependencies = new();
foreach (var item in (component.Author?.Split(",")).Where(item => item.Contains(':')))
{
var componentDetails = item.Split(":");
var name = StringFormat(componentDetails[0]);
var version = StringFormat(componentDetails[1]);
string name;
string version;

if (componentDetails.Length >= 3 && componentDetails[2].Contains('@'))
{
var npmDetails = componentDetails[2].Split('@');
name = StringFormat(npmDetails[0]);
version = StringFormat(npmDetails[1]);
}
else
{
name = StringFormat(componentDetails[0]);
version = StringFormat(componentDetails[1]);
}
string purlId = $"{ApiConstant.NPMExternalID}{name}@{version}";
Dependency dependentList = new Dependency()
{
Expand Down
1 change: 1 addition & 0 deletions src/LCT.PackageIdentifier/NugetProcessor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ public Bom ParsePackageFile(CommonAppSettings appSettings)

CheckForMultipleVersions(appSettings, componentsWithMultipleVersions);
bom.Dependencies = bom.Dependencies?.GroupBy(x => new { x.Ref }).Select(y => y.First()).ToList();
bom.Dependencies = CommonHelper.RemoveInvalidDependenciesAndReferences(bom.Components, bom.Dependencies);
Logger.Debug($"ParsePackageFile():End");
return bom;
}
Expand Down
1 change: 1 addition & 0 deletions src/LCT.PackageIdentifier/PythonProcessor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ public Bom ParsePackageFile(CommonAppSettings appSettings)
{
AddSiemensDirectProperty(ref bom);
}
bom.Dependencies = CommonHelper.RemoveInvalidDependenciesAndReferences(bom.Components, bom.Dependencies);
return bom;
}

Expand Down

0 comments on commit bc3eeee

Please sign in to comment.