Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions src/UnityNuGet/Npm/NpmPackageVersion.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@ namespace UnityNuGet.Npm
/// </summary>
public class NpmPackageVersion : NpmObject
{
public class UpmPackageInfo
{
[JsonPropertyName("changelog")]
public string? Changelog { get; set; }
}

[JsonPropertyName("name")]
public string? Name { get; set; }

Expand All @@ -23,6 +29,10 @@ public class NpmPackageVersion : NpmObject
[JsonPropertyName("_id")]
public string? Id { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("_upm")]
public UpmPackageInfo? Upm { get; set; }

[JsonPropertyName("unity")]
public string? Unity { get; set; }

Expand Down
58 changes: 36 additions & 22 deletions src/UnityNuGet/RegistryCache.cs
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ public async Task Build(CancellationToken cancellationToken = default)
{
foreach (SourceRepository source in _sourceRepositories)
{
PackageMetadataResource packageMetadataResource = source.GetResource<PackageMetadataResource>();
PackageMetadataResource packageMetadataResource = await source.GetResourceAsync<PackageMetadataResource>(cancellationToken);

IEnumerable<IPackageSearchMetadata> result = await packageMetadataResource.GetMetadataAsync(
packageName,
Expand Down Expand Up @@ -491,11 +491,43 @@ private async Task BuildInternal(CancellationToken cancellationToken = default)
// If we don't have any dependencies error, generate the package
if (!hasDependencyErrors)
{
using DownloadResourceResult downloadResult = await GetPackageDownloadResourceResult(packageIdentity, cancellationToken);

using PackageReaderBase packageReader = downloadResult.PackageReader;

string releaseNotes = packageReader.NuspecReader.GetReleaseNotes();

if (!string.IsNullOrEmpty(releaseNotes))
{
npmVersion.Upm = new NpmPackageVersion.UpmPackageInfo
{
Changelog = releaseNotes,
};
}

// Update Repository metadata if necessary
RepositoryMetadata repoMeta = packageReader.NuspecReader.GetRepositoryMetadata();

if (repoMeta != null && repoMeta.Url != null && repoMeta.Commit != null && repoMeta.Type != null)
{
npmVersion.Repository = new NpmSourceRepository()
{
Revision = repoMeta.Commit,
Type = repoMeta.Type,
Url = repoMeta.Url,
};
}
else
{
npmVersion.Repository = null;
}

bool packageConverted = await ConvertNuGetToUnityPackageIfDoesNotExist(
packageIdentity,
npmPackageInfo,
npmVersion,
packageMeta,
packageReader,
forceUpdate,
packageEntry,
cancellationToken);
Expand Down Expand Up @@ -580,6 +612,7 @@ private async Task<bool> ConvertNuGetToUnityPackageIfDoesNotExist(
NpmPackageInfo npmPackageInfo,
NpmPackageVersion npmPackageVersion,
IPackageSearchMetadata packageMeta,
PackageReaderBase packageReader,
bool forceUpdate,
RegistryEntry packageEntry,
CancellationToken cancellationToken = default)
Expand All @@ -597,6 +630,7 @@ await ConvertNuGetPackageToUnity(
npmPackageInfo,
npmPackageVersion,
packageMeta,
packageReader,
packageEntry,
cancellationToken);

Expand All @@ -621,6 +655,7 @@ internal async Task ConvertNuGetPackageToUnity(
NpmPackageInfo npmPackageInfo,
NpmPackageVersion npmPackageVersion,
IPackageSearchMetadata packageMeta,
PackageReaderBase packageReader,
RegistryEntry packageEntry,
CancellationToken cancellationToken = default)
{
Expand All @@ -629,27 +664,6 @@ internal async Task ConvertNuGetPackageToUnity(

LogInformation($"Converting NuGet package {identity} to Unity `{unityPackageFileName}`");

using DownloadResourceResult downloadResult = await GetPackageDownloadResourceResult(identity, cancellationToken);

using PackageReaderBase packageReader = downloadResult.PackageReader;

// Update Repository metadata if necessary
RepositoryMetadata repoMeta = packageReader.NuspecReader.GetRepositoryMetadata();

if (repoMeta != null && repoMeta.Url != null && repoMeta.Commit != null && repoMeta.Type != null)
{
npmPackageVersion.Repository = new NpmSourceRepository()
{
Revision = repoMeta.Commit,
Type = repoMeta.Type,
Url = repoMeta.Url,
};
}
else
{
npmPackageVersion.Repository = null;
}

try
{
using var memStream = new MemoryStream();
Expand Down