Skip to content

Commit f72130a

Browse files
committed
Bug fixes for choco
1 parent 6ae0d23 commit f72130a

File tree

10 files changed

+156
-212
lines changed

10 files changed

+156
-212
lines changed

src/ArtifactoryUploader/Model/DisplayPackagesInfo.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,27 +23,31 @@ public class DisplayPackagesInfo
2323
public List<ComponentsToArtifactory> UnknownPackagesDebian { get; set; }
2424
public List<ComponentsToArtifactory> UnknownPackagesMaven { get; set; }
2525
public List<ComponentsToArtifactory> UnknownPackagesCargo { get; set; }
26+
public List<ComponentsToArtifactory> UnknownPackagesChoco { get; set; }
2627
public List<ComponentsToArtifactory> JfrogNotFoundPackagesNpm { get; set; }
2728
public List<ComponentsToArtifactory> JfrogNotFoundPackagesNuget { get; set; }
2829
public List<ComponentsToArtifactory> JfrogNotFoundPackagesConan { get; set; }
2930
public List<ComponentsToArtifactory> JfrogNotFoundPackagesPython { get; set; }
3031
public List<ComponentsToArtifactory> JfrogNotFoundPackagesDebian { get; set; }
3132
public List<ComponentsToArtifactory> JfrogNotFoundPackagesMaven { get; set; }
3233
public List<ComponentsToArtifactory> JfrogNotFoundPackagesCargo { get; set; }
34+
public List<ComponentsToArtifactory> JfrogNotFoundPackagesChoco { get; set; }
3335
public List<ComponentsToArtifactory> JfrogFoundPackagesNpm { get; set; }
3436
public List<ComponentsToArtifactory> JfrogFoundPackagesNuget { get; set; }
3537
public List<ComponentsToArtifactory> JfrogFoundPackagesConan { get; set; }
3638
public List<ComponentsToArtifactory> JfrogFoundPackagesPython { get; set; }
3739
public List<ComponentsToArtifactory> JfrogFoundPackagesDebian { get; set; }
3840
public List<ComponentsToArtifactory> JfrogFoundPackagesMaven { get; set; }
3941
public List<ComponentsToArtifactory> JfrogFoundPackagesCargo { get; set; }
42+
public List<ComponentsToArtifactory> JfrogFoundPackagesChoco { get; set; }
4043
public List<ComponentsToArtifactory> SuccessfullPackagesNpm { get; set; }
4144
public List<ComponentsToArtifactory> SuccessfullPackagesNuget { get; set; }
4245
public List<ComponentsToArtifactory> SuccessfullPackagesConan { get; set; }
4346
public List<ComponentsToArtifactory> SuccessfullPackagesPython { get; set; }
4447
public List<ComponentsToArtifactory> SuccessfullPackagesDebian { get; set; }
4548
public List<ComponentsToArtifactory> SuccessfullPackagesMaven { get; set; }
4649
public List<ComponentsToArtifactory> SuccessfullPackagesCargo { get; set; }
50+
public List<ComponentsToArtifactory> SuccessfullPackagesChoco { get; set; }
4751

4852
}
4953
public class ProjectResponse
@@ -62,6 +66,8 @@ public class ProjectResponse
6266
public List<JsonComponents> Maven { get; set; }
6367
[JsonProperty("cargo")]
6468
public List<JsonComponents> Cargo { get; set; }
69+
[JsonProperty("choco")]
70+
public List<JsonComponents> Choco { get; set; }
6571
}
6672

6773
public class JsonComponents

src/ArtifactoryUploader/PackageUploadHelper.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,11 @@ private static void AddComponentToDisplayList(string componentType, ComponentsTo
136136
AddToNpmList(component, displayPackagesInfo, notFound, success);
137137
break;
138138
case "NUGET":
139-
case "CHOCO":
140139
AddToNugetList(component, displayPackagesInfo, notFound, success);
141140
break;
141+
case "CHOCO":
142+
AddToChocoList(component, displayPackagesInfo, notFound, success);
143+
break;
142144
case "MAVEN":
143145
AddToMavenList(component, displayPackagesInfo, notFound, success);
144146
break;
@@ -226,7 +228,15 @@ private static void AddToCargoList(ComponentsToArtifactory component, DisplayPac
226228
else
227229
displayPackagesInfo.JfrogFoundPackagesCargo.Add(component);
228230
}
229-
231+
private static void AddToChocoList(ComponentsToArtifactory component, DisplayPackagesInfo displayPackagesInfo, bool notFound, bool success)
232+
{
233+
if (notFound)
234+
displayPackagesInfo.JfrogNotFoundPackagesChoco.Add(component);
235+
else if (success)
236+
displayPackagesInfo.SuccessfullPackagesChoco.Add(component);
237+
else
238+
displayPackagesInfo.JfrogFoundPackagesChoco.Add(component);
239+
}
230240
// Properly wrap UploadingThePackages as a method
231241
public static async Task UploadingThePackages(List<ComponentsToArtifactory> componentsToUpload, int timeout, DisplayPackagesInfo displayPackagesInfo)
232242
{

src/ArtifactoryUploader/PackageUploadInformation.cs

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,27 +36,31 @@ public static DisplayPackagesInfo GetComponentsToBePackages()
3636
displayPackagesInfo.UnknownPackagesPython = new List<ComponentsToArtifactory>();
3737
displayPackagesInfo.UnknownPackagesDebian = new List<ComponentsToArtifactory>();
3838
displayPackagesInfo.UnknownPackagesCargo = new List<ComponentsToArtifactory>();
39+
displayPackagesInfo.UnknownPackagesChoco = new List<ComponentsToArtifactory>();
3940
displayPackagesInfo.JfrogNotFoundPackagesNpm = new List<ComponentsToArtifactory>();
4041
displayPackagesInfo.JfrogNotFoundPackagesNuget = new List<ComponentsToArtifactory>();
4142
displayPackagesInfo.JfrogNotFoundPackagesPython = new List<ComponentsToArtifactory>();
4243
displayPackagesInfo.JfrogNotFoundPackagesMaven = new List<ComponentsToArtifactory>();
4344
displayPackagesInfo.JfrogNotFoundPackagesConan = new List<ComponentsToArtifactory>();
4445
displayPackagesInfo.JfrogNotFoundPackagesDebian = new List<ComponentsToArtifactory>();
4546
displayPackagesInfo.JfrogNotFoundPackagesCargo = new List<ComponentsToArtifactory>();
47+
displayPackagesInfo.JfrogNotFoundPackagesChoco = new List<ComponentsToArtifactory>();
4648
displayPackagesInfo.JfrogFoundPackagesNpm = new List<ComponentsToArtifactory>();
4749
displayPackagesInfo.JfrogFoundPackagesNuget = new List<ComponentsToArtifactory>();
4850
displayPackagesInfo.JfrogFoundPackagesPython = new List<ComponentsToArtifactory>();
4951
displayPackagesInfo.JfrogFoundPackagesMaven = new List<ComponentsToArtifactory>();
5052
displayPackagesInfo.JfrogFoundPackagesConan = new List<ComponentsToArtifactory>();
5153
displayPackagesInfo.JfrogFoundPackagesDebian = new List<ComponentsToArtifactory>();
5254
displayPackagesInfo.JfrogFoundPackagesCargo = new List<ComponentsToArtifactory>();
55+
displayPackagesInfo.JfrogFoundPackagesChoco = new List<ComponentsToArtifactory>();
5356
displayPackagesInfo.SuccessfullPackagesNpm = new List<ComponentsToArtifactory>();
5457
displayPackagesInfo.SuccessfullPackagesNuget = new List<ComponentsToArtifactory>();
5558
displayPackagesInfo.SuccessfullPackagesPython = new List<ComponentsToArtifactory>();
5659
displayPackagesInfo.SuccessfullPackagesMaven = new List<ComponentsToArtifactory>();
5760
displayPackagesInfo.SuccessfullPackagesConan = new List<ComponentsToArtifactory>();
5861
displayPackagesInfo.SuccessfullPackagesDebian = new List<ComponentsToArtifactory>();
5962
displayPackagesInfo.SuccessfullPackagesCargo = new List<ComponentsToArtifactory>();
63+
displayPackagesInfo.SuccessfullPackagesChoco = new List<ComponentsToArtifactory>();
6064

6165

6266
return displayPackagesInfo;
@@ -106,6 +110,7 @@ public static void DisplayPackageUploadInformation(DisplayPackagesInfo displayPa
106110
DisplaySortedForeachComponents(displayPackagesInfo.UnknownPackagesPython, displayPackagesInfo.JfrogNotFoundPackagesPython, displayPackagesInfo.SuccessfullPackagesPython, displayPackagesInfo.JfrogFoundPackagesPython, "Poetry", localPathforartifactory);
107111
DisplaySortedForeachComponents(displayPackagesInfo.UnknownPackagesDebian, displayPackagesInfo.JfrogNotFoundPackagesDebian, displayPackagesInfo.SuccessfullPackagesDebian, displayPackagesInfo.JfrogFoundPackagesDebian, "Debian", localPathforartifactory);
108112
DisplaySortedForeachComponents(displayPackagesInfo.UnknownPackagesCargo, displayPackagesInfo.JfrogNotFoundPackagesCargo, displayPackagesInfo.SuccessfullPackagesCargo, displayPackagesInfo.JfrogFoundPackagesCargo, "Cargo", localPathforartifactory);
113+
DisplaySortedForeachComponents(displayPackagesInfo.UnknownPackagesChoco, displayPackagesInfo.JfrogNotFoundPackagesChoco, displayPackagesInfo.SuccessfullPackagesChoco, displayPackagesInfo.JfrogFoundPackagesChoco, "Choco", localPathforartifactory);
109114

110115
}
111116
private static void DisplaySortedForeachComponents(
@@ -327,7 +332,8 @@ private static void DisplayErrorForUnknownPackages(List<ComponentsToArtifactory>
327332
{ "Debian", GetNotApprovedDebianPackages },
328333
{ "Maven", GetNotApprovedMavenPackages },
329334
{ "Poetry", GetNotApprovedPythonPackages },
330-
{ "Cargo", GetNotApprovedCargoPackages }
335+
{ "Choco", GetNotApprovedChocoPackages },
336+
{ "Cargo", GetNotApprovedCargoPackages }
331337
};
332338

333339
if (packageHandlers.TryGetValue(name, out var handler))
@@ -569,6 +575,40 @@ private static void GetNotApprovedMavenPackages(List<ComponentsToArtifactory> un
569575
}
570576
WarningMessageForNoPackages(filename);
571577
}
578+
private static void GetNotApprovedChocoPackages(List<ComponentsToArtifactory> unknownPackages, ProjectResponse projectResponse, IFileOperations fileOperations, string filepath, string filename)
579+
{
580+
if (File.Exists(filename))
581+
{
582+
string json = File.ReadAllText(filename);
583+
584+
ProjectResponse myDeserializedClass = JsonConvert.DeserializeObject<ProjectResponse>(json);
585+
List<JsonComponents> chocoComponents = new List<JsonComponents>();
586+
foreach (var chocoPackage in unknownPackages)
587+
{
588+
JsonComponents jsonComponents = new JsonComponents();
589+
jsonComponents.Name = chocoPackage.Name;
590+
jsonComponents.Version = chocoPackage.Version;
591+
chocoComponents.Add(jsonComponents);
592+
}
593+
myDeserializedClass.Choco = chocoComponents;
594+
fileOperations.WriteContentToReportNotApprovedFile(myDeserializedClass, filepath, FileConstant.artifactoryReportNotApproved, "Artifactory");
595+
596+
597+
}
598+
else
599+
{
600+
projectResponse.Choco = new List<JsonComponents>();
601+
foreach (var chocoPackage in unknownPackages)
602+
{
603+
JsonComponents jsonComponents = new JsonComponents();
604+
jsonComponents.Name = chocoPackage.Name;
605+
jsonComponents.Version = chocoPackage.Version;
606+
projectResponse.Choco.Add(jsonComponents);
607+
}
608+
fileOperations.WriteContentToReportNotApprovedFile(projectResponse, filepath, FileConstant.artifactoryReportNotApproved, "Artifactory");
609+
}
610+
WarningMessageForNoPackages(filename);
611+
}
572612

573613
}
574614
}

src/ArtifactoryUploader/UploadToArtifactory.cs

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,15 @@ public async static Task<List<ComponentsToArtifactory>> GetComponentsToBeUploade
8888

8989
private static string GetComponentType(Component item)
9090
{
91+
var projectTypeProp = item.Properties
92+
?.Find(p => p.Name == Dataconstant.Cdx_ProjectType)
93+
?.Value;
9194

95+
if (!string.IsNullOrEmpty(projectTypeProp) &&
96+
projectTypeProp.Equals("choco", StringComparison.InvariantCultureIgnoreCase))
97+
{
98+
return "CHOCO";
99+
}
92100
if (item.Purl.Contains("npm", StringComparison.OrdinalIgnoreCase))
93101
{
94102
return "NPM";
@@ -97,10 +105,6 @@ private static string GetComponentType(Component item)
97105
{
98106
return "NUGET";
99107
}
100-
else if (item.Purl.Contains("choco", StringComparison.OrdinalIgnoreCase))
101-
{
102-
return "CHOCO";
103-
}
104108
else if (item.Purl.Contains("maven", StringComparison.OrdinalIgnoreCase))
105109
{
106110
return "MAVEN";
@@ -242,17 +246,11 @@ public static string GetCopyURL(ComponentsToArtifactory component)
242246
$"?to=/{component.DestRepoName}/{component.Path}/{component.PypiOrNpmCompName}";
243247

244248
}
245-
else if (component.ComponentType == "NUGET")
249+
else if (component.ComponentType == "NUGET" || component.ComponentType == "CHOCO")
246250
{
247251
url = $"{component.JfrogApi}{ApiConstant.CopyPackageApi}{component.SrcRepoName}/{component.PackageName}.{component.Version}" +
248252
$"{ApiConstant.NugetExtension}?to=/{component.DestRepoName}/{component.Name}.{component.Version}{ApiConstant.NugetExtension}";
249253
}
250-
else if (component.ComponentType == "CHOCO")
251-
{
252-
// Choco package copy URL (similar to NuGet)
253-
url = $"{component.JfrogApi}{ApiConstant.CopyPackageApi}{component.SrcRepoName}/{component.PackageName}.{component.Version}.nupkg" +
254-
$"?to=/{component.DestRepoName}/{component.Name}.{component.Version}.nupkg";
255-
}
256254
else if (component.ComponentType == "MAVEN")
257255
{
258256
url = $"{component.JfrogApi}{ApiConstant.CopyPackageApi}{component.SrcRepoName}/{component.Path}" +
@@ -297,7 +295,7 @@ public static string GetMoveURL(ComponentsToArtifactory component)
297295
$"?to=/{component.DestRepoName}/{component.Path}/{component.PypiOrNpmCompName}";
298296

299297
}
300-
else if (component.ComponentType == "NUGET")
298+
else if (component.ComponentType == "NUGET" || component.ComponentType == "CHOCO")
301299
{
302300
url = $"{component.JfrogApi}{ApiConstant.MovePackageApi}{component.SrcRepoName}/{component.PackageName}.{component.Version}" +
303301
$"{ApiConstant.NugetExtension}?to=/{component.DestRepoName}/{component.Name}.{component.Version}{ApiConstant.NugetExtension}";
@@ -343,6 +341,7 @@ private static string GetJfrogPackageName(ComponentsToArtifactory component)
343341
{
344342
"NPM" => component.PypiOrNpmCompName,
345343
"NUGET" => $"{component.PackageName}.{component.Version}{ApiConstant.NugetExtension}",
344+
"CHOCO" => $"{component.PackageName}.{component.Version}{ApiConstant.NugetExtension}",
346345
"DEBIAN" => $"{component.PackageName}_{component.Version.Replace(ApiConstant.DebianExtension, "") + "*"}",
347346
"CARGO" => $"{component.PackageName}.{component.Version}{ApiConstant.CargoExtension}",
348347
"POETRY" => component.PypiOrNpmCompName,
@@ -389,6 +388,9 @@ private static void AddUnknownComponentToDisplayList(string projectType, Compone
389388
case "CARGO":
390389
displayPackagesInfo.UnknownPackagesCargo.Add(component);
391390
break;
391+
case "CHOCO":
392+
displayPackagesInfo.UnknownPackagesChoco.Add(component);
393+
break;
392394
}
393395
}
394396

@@ -455,7 +457,7 @@ public async static Task<AqlResult> GetSrcRepoDetailsForComponent(Component item
455457
{
456458
return GetArtifactoryRepoName(aqlResultList, item);
457459
}
458-
}
460+
}
459461

460462
return null;
461463
}
@@ -604,6 +606,21 @@ string GetPropertyValue(string propertyName) =>
604606

605607
return PackageType.Unknown;
606608
}
609+
private static String GetProjectType(Component item)
610+
{
611+
string GetPropertyValue(string propertyName) =>
612+
item.Properties
613+
.Find(p => p.Name == propertyName)?
614+
.Value?
615+
.ToUpperInvariant();
616+
617+
if (GetPropertyValue(Dataconstant.Cdx_ProjectType) == "Choco")
618+
{
619+
return "CHOCO";
620+
}
621+
622+
return null;
623+
}
607624

608625
}
609626
}

src/LCT.APICommunications/JfrogAqlApiCommunication.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ public static string BuildAqlQuery(ComponentsToArtifactory component)
128128
{
129129
return BuildAqlQueryWithFields(component.SrcRepoName, new[] { ("@pypi.normalized.name", component.Name), ("@pypi.version", component.Version) });
130130
}
131-
else if (component.ComponentType.Equals("Nuget", StringComparison.InvariantCultureIgnoreCase))
131+
else if (component.ComponentType.Equals("Nuget", StringComparison.InvariantCultureIgnoreCase) || component.ComponentType.Equals("Choco", StringComparison.InvariantCultureIgnoreCase))
132132
{
133133
// NuGet: $and for repo, $or for id (case), and version
134134
return $"items.find({{\"$and\": [{{ \"repo\":{{ \"$eq\": \"{component.SrcRepoName}\" }} }},{{ \"$or\":[{{ \"@nuget.id\":{{ \"$eq\": \"{component.Name}\" }} }},{{ \"@nuget.id\":{{ \"$eq\": \"{component.Name.ToLowerInvariant()}\" }} }}]}},{{ \"@nuget.version\":{{\"$eq\": \"{component.Version}\" }} }}]}}).include(\"repo\", \"path\", \"name\").limit(1)";

0 commit comments

Comments
 (0)