Skip to content

Commit e0deb1f

Browse files
ConvertNuGetPackageToUnity returns boolean
1 parent 9efe558 commit e0deb1f

1 file changed

Lines changed: 49 additions & 38 deletions

File tree

src/UnityNuGet/RegistryCache.cs

Lines changed: 49 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,18 @@ private async Task BuildInternal()
436436
// If we don't have any dependencies error, generate the package
437437
if (!hasDependencyErrors)
438438
{
439-
bool packageConverted = await ConvertNuGetToUnityPackageIfDoesNotExist(packageIdentity, npmPackageInfo, npmVersion, packageMeta, forceUpdate, packageEntry);
439+
bool packageAvailable = await ConvertNuGetToUnityPackageIfDoesNotExist(packageIdentity, npmPackageInfo, npmVersion, packageMeta, forceUpdate, packageEntry);
440+
441+
if (!packageAvailable)
442+
{
443+
npmPackage.Versions.Remove(npmVersion.Version);
444+
445+
if (npmPackageInfo.Versions.TryGetValue(npmCurrentVersion, out var tagValue) && tagValue == "latest")
446+
npmPackageInfo.Versions.Remove(npmCurrentVersion);
447+
448+
continue;
449+
}
450+
440451
npmPackage.Time[npmCurrentVersion] = packageMeta.Published?.UtcDateTime ?? GetUnityPackageFileInfo(packageIdentity, npmVersion).CreationTimeUtc;
441452

442453
// Copy repository info if necessary
@@ -448,7 +459,7 @@ private async Task BuildInternal()
448459
// Update the cache entry
449460
await WritePackageCacheEntry(packageId, cacheEntry);
450461

451-
if (packageConverted && IsRunningOnAzure)
462+
if (packageAvailable && IsRunningOnAzure)
452463
{
453464
string localPackagePath = Path.Combine(globalPackagesFolder, packageIdentity.Id.ToLowerInvariant(), packageIdentity.Version.ToString());
454465

@@ -503,22 +514,18 @@ RegistryEntry packageEntry
503514

504515
if (!IsUnityPackageValid(identity, npmPackageVersion) || !IsUnityPackageSha1Valid(identity, npmPackageVersion))
505516
{
506-
await ConvertNuGetPackageToUnity(identity, npmPackageInfo, npmPackageVersion, packageMeta, packageEntry);
507-
508-
return true;
517+
return await ConvertNuGetPackageToUnity(identity, npmPackageInfo, npmPackageVersion, packageMeta, packageEntry);
509518
}
510-
else
511-
{
512-
npmPackageVersion.Distribution.Shasum = await ReadUnityPackageSha1(identity, npmPackageVersion);
513519

514-
return false;
515-
}
520+
npmPackageVersion.Distribution.Shasum = await ReadUnityPackageSha1(identity, npmPackageVersion);
521+
522+
return true;
516523
}
517524

518525
/// <summary>
519526
/// Converts a NuGet package to a Unity package.
520527
/// </summary>
521-
private async Task ConvertNuGetPackageToUnity
528+
private async Task<bool> ConvertNuGetPackageToUnity
522529
(
523530
PackageIdentity identity,
524531
NpmPackageInfo npmPackageInfo,
@@ -556,38 +563,38 @@ RegistryEntry packageEntry
556563
{
557564
using var memStream = new MemoryStream();
558565

559-
using (var outStream = File.Create(unityPackageFilePath))
560-
using (var gzoStream = new GZipOutputStream(outStream)
561-
{
562-
ModifiedTime = packageMeta.Published?.UtcDateTime
563-
})
564-
using (var tarArchive = new TarOutputStream(gzoStream, Encoding.UTF8))
565-
{
566-
// Select the framework version that is the closest or equal to the latest configured framework version
567-
var versions = await packageReader.GetLibItemsAsync(CancellationToken.None);
566+
// Select the framework version that is the closest or equal to the latest configured framework version
567+
var versions = await packageReader.GetLibItemsAsync(CancellationToken.None);
568568

569-
var closestVersions = NuGetHelper.GetClosestFrameworkSpecificGroups(versions, _targetFrameworks);
569+
var closestVersions = NuGetHelper.GetClosestFrameworkSpecificGroups(versions, _targetFrameworks);
570570

571-
var collectedItems = new Dictionary<FrameworkSpecificGroup, HashSet<RegistryTargetFramework>>();
571+
var collectedItems = new Dictionary<FrameworkSpecificGroup, HashSet<RegistryTargetFramework>>();
572572

573-
foreach (var (item, targetFramework) in closestVersions)
573+
foreach (var (item, targetFramework) in closestVersions)
574+
{
575+
if (!collectedItems.TryGetValue(item, out var frameworksPerGroup))
574576
{
575-
if (!collectedItems.TryGetValue(item, out var frameworksPerGroup))
576-
{
577-
frameworksPerGroup = new HashSet<RegistryTargetFramework>();
578-
collectedItems.Add(item, frameworksPerGroup);
579-
}
580-
frameworksPerGroup.Add(targetFramework);
577+
frameworksPerGroup = new HashSet<RegistryTargetFramework>();
578+
collectedItems.Add(item, frameworksPerGroup);
581579
}
580+
frameworksPerGroup.Add(targetFramework);
581+
}
582582

583-
if (!packageEntry.Analyzer && collectedItems.Count == 0)
584-
{
585-
LogWarning(
586-
$"Skipping package `{identity}` because it does not contain a compatible .NET assembly " +
587-
$"for {string.Join(",", _targetFrameworks.Select(x => x.Name))}.");
588-
return;
589-
}
583+
if (!packageEntry.Analyzer && collectedItems.Count == 0)
584+
{
585+
LogWarning(
586+
$"Skipping package `{identity}` because it does not contain a compatible .NET assembly " +
587+
$"for {string.Join(",", _targetFrameworks.Select(x => x.Name))}.");
588+
return false;
589+
}
590590

591+
using (var outStream = File.Create(unityPackageFilePath))
592+
using (var gzoStream = new GZipOutputStream(outStream)
593+
{
594+
ModifiedTime = packageMeta.Published?.UtcDateTime
595+
})
596+
using (var tarArchive = new TarOutputStream(gzoStream, Encoding.UTF8))
597+
{
591598
var isPackageNetStandard21Assembly = DotNetHelper.IsNetStandard21Assembly(identity.Id);
592599
var hasMultiNetStandard = collectedItems.Count > 1;
593600
var hasOnlyNetStandard21 = collectedItems.Count == 1 && collectedItems.Values.First().All(x => x.Name == "netstandard2.1");
@@ -834,7 +841,7 @@ RegistryEntry packageEntry
834841
LogWarning(
835842
$"Skipping package `{identity}` because it does not contain a compatible .NET assembly " +
836843
$"for {string.Join(",", _targetFrameworks.Select(x => x.Name))}.");
837-
return;
844+
return false;
838845
}
839846

840847
// Write the native libraries
@@ -905,6 +912,7 @@ RegistryEntry packageEntry
905912
// Try to fetch the license from an URL
906913
using (var httpClient = new HttpClient())
907914
{
915+
httpClient.Timeout = TimeSpan.FromSeconds(15);
908916
licenseUrlText = await httpClient.GetStringAsync(licenseUrl);
909917
}
910918

@@ -969,7 +977,10 @@ RegistryEntry packageEntry
969977
}
970978

971979
LogWarning($"Error while processing package `{identity}`. Reason: {ex}");
980+
return false;
972981
}
982+
983+
return true;
973984
}
974985

975986
private static Guid GetStableGuid(PackageIdentity identity, string name)
@@ -1183,4 +1194,4 @@ private static List<string> SplitCommaSeparatedString(string input)
11831194
return list;
11841195
}
11851196
}
1186-
}
1197+
}

0 commit comments

Comments
 (0)