Skip to content

Commit 6bee4e3

Browse files
committed
feat: use Nuget publishTime
1 parent 8829b4d commit 6bee4e3

1 file changed

Lines changed: 22 additions & 21 deletions

File tree

src/UnityNuGet/RegistryCache.cs

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -556,7 +556,7 @@ RegistryEntry packageEntry
556556
using (var outStream = File.Create(unityPackageFilePath))
557557
using (var gzoStream = new GZipOutputStream(outStream)
558558
{
559-
ModifiedTime = DateTime.UnixEpoch
559+
ModifiedTime = packageMeta.Published?.UtcDateTime
560560
})
561561
using (var tarArchive = new TarOutputStream(gzoStream, Encoding.UTF8))
562562
{
@@ -585,6 +585,7 @@ RegistryEntry packageEntry
585585
var isPackageNetStandard21Assembly = DotNetHelper.IsNetStandard21Assembly(identity.Id);
586586
var hasMultiNetStandard = collectedItems.Count > 1;
587587
var hasOnlyNetStandard21 = collectedItems.Count == 1 && collectedItems.Values.First().All(x => x.Name == "netstandard2.1");
588+
var modTime = packageMeta.Published?.DateTime ?? DateTime.UnixEpoch;
588589

589590
if (isPackageNetStandard21Assembly)
590591
{
@@ -628,7 +629,7 @@ RegistryEntry packageEntry
628629
createdDirectoryList.Add(processedDirectoryName);
629630

630631
// write meta file for the folder
631-
await WriteTextFileToTar(tarArchive, $"{processedDirectoryName}.meta", UnityMeta.GetMetaForFolder(GetStableGuid(identity, processedDirectoryName)));
632+
await WriteTextFileToTar(tarArchive, $"{processedDirectoryName}.meta", UnityMeta.GetMetaForFolder(GetStableGuid(identity, processedDirectoryName)), modTime);
632633
}
633634
}
634635

@@ -663,25 +664,25 @@ RegistryEntry packageEntry
663664
var buffer = memStream.ToArray();
664665

665666
// write content
666-
await WriteBufferToTar(tarArchive, fileInUnityPackage, buffer);
667+
await WriteBufferToTar(tarArchive, fileInUnityPackage, buffer, modTime);
667668

668669
// write meta file
669-
await WriteTextFileToTar(tarArchive, $"{fileInUnityPackage}.meta", meta);
670+
await WriteTextFileToTar(tarArchive, $"{fileInUnityPackage}.meta", meta, modTime);
670671
}
671672

672673
// Write analyzer asmdef
673674
// Check Analyzer Scope section: https://docs.unity3d.com/Manual/roslyn-analyzers.html
674675
var analyzerAsmdef = CreateAnalyzerAmsdef(identity);
675676
var analyzerAsmdefAsJson = analyzerAsmdef.ToJson();
676677
string analyzerAsmdefFileName = $"{identity.Id}.asmdef";
677-
await WriteTextFileToTar(tarArchive, analyzerAsmdefFileName, analyzerAsmdefAsJson);
678-
await WriteTextFileToTar(tarArchive, $"{analyzerAsmdefFileName}.meta", UnityMeta.GetMetaForExtension(GetStableGuid(identity, analyzerAsmdefFileName), ".asmdef")!);
678+
await WriteTextFileToTar(tarArchive, analyzerAsmdefFileName, analyzerAsmdefAsJson, modTime);
679+
await WriteTextFileToTar(tarArchive, $"{analyzerAsmdefFileName}.meta", UnityMeta.GetMetaForExtension(GetStableGuid(identity, analyzerAsmdefFileName), ".asmdef")!, modTime);
679680

680681
// Write empty script (Necessary to compile the asmdef file)
681682
var emptyScriptContent = UnityScript.GetEmptyScript();
682683
const string emptyScriptFileName = "EmptyScript.cs";
683-
await WriteTextFileToTar(tarArchive, emptyScriptFileName, emptyScriptContent);
684-
await WriteTextFileToTar(tarArchive, $"{emptyScriptFileName}.meta", UnityMeta.GetMetaForExtension(GetStableGuid(identity, emptyScriptFileName), ".cs")!);
684+
await WriteTextFileToTar(tarArchive, emptyScriptFileName, emptyScriptContent, modTime);
685+
await WriteTextFileToTar(tarArchive, $"{emptyScriptFileName}.meta", UnityMeta.GetMetaForExtension(GetStableGuid(identity, emptyScriptFileName), ".cs")!, modTime);
685686
}
686687

687688
// Get all known platform definitions
@@ -795,10 +796,10 @@ RegistryEntry packageEntry
795796
var buffer = memStream.ToArray();
796797

797798
// write content
798-
await WriteBufferToTar(tarArchive, fileInUnityPackage, buffer);
799+
await WriteBufferToTar(tarArchive, fileInUnityPackage, buffer, modTime);
799800

800801
// write meta file
801-
await WriteTextFileToTar(tarArchive, $"{fileInUnityPackage}.meta", meta);
802+
await WriteTextFileToTar(tarArchive, $"{fileInUnityPackage}.meta", meta, modTime);
802803
}
803804
}
804805

@@ -838,8 +839,8 @@ RegistryEntry packageEntry
838839
await stream.CopyToAsync(memStream);
839840
var buffer = memStream.ToArray();
840841

841-
await WriteBufferToTar(tarArchive, file, buffer);
842-
await WriteTextFileToTar(tarArchive, $"{file}.meta", meta);
842+
await WriteBufferToTar(tarArchive, file, buffer, modTime);
843+
await WriteTextFileToTar(tarArchive, $"{file}.meta", meta, modTime);
843844

844845
// Remember all folders for meta files
845846
string folder = string.Empty;
@@ -853,15 +854,15 @@ RegistryEntry packageEntry
853854

854855
foreach (var folder in packageFolders)
855856
{
856-
await WriteTextFileToTar(tarArchive, $"{folder}.meta", UnityMeta.GetMetaForFolder(GetStableGuid(identity, folder)));
857+
await WriteTextFileToTar(tarArchive, $"{folder}.meta", UnityMeta.GetMetaForFolder(GetStableGuid(identity, folder)), modTime);
857858
}
858859

859860
// Write the package,json
860861
var unityPackage = CreateUnityPackage(npmPackageInfo, npmPackageVersion);
861862
var unityPackageAsJson = unityPackage.ToJson();
862863
const string packageJsonFileName = "package.json";
863-
await WriteTextFileToTar(tarArchive, packageJsonFileName, unityPackageAsJson);
864-
await WriteTextFileToTar(tarArchive, $"{packageJsonFileName}.meta", UnityMeta.GetMetaForExtension(GetStableGuid(identity, packageJsonFileName), ".json")!);
864+
await WriteTextFileToTar(tarArchive, packageJsonFileName, unityPackageAsJson, modTime);
865+
await WriteTextFileToTar(tarArchive, $"{packageJsonFileName}.meta", UnityMeta.GetMetaForExtension(GetStableGuid(identity, packageJsonFileName), ".json")!, modTime);
865866

866867
// Write the license to the package if any
867868
string? license = null;
@@ -915,8 +916,8 @@ RegistryEntry packageEntry
915916
if (!string.IsNullOrEmpty(license))
916917
{
917918
const string licenseMdFile = "License.md";
918-
await WriteTextFileToTar(tarArchive, licenseMdFile, license);
919-
await WriteTextFileToTar(tarArchive, $"{licenseMdFile}.meta", UnityMeta.GetMetaForExtension(GetStableGuid(identity, licenseMdFile), ".md")!);
919+
await WriteTextFileToTar(tarArchive, licenseMdFile, license, modTime);
920+
await WriteTextFileToTar(tarArchive, $"{licenseMdFile}.meta", UnityMeta.GetMetaForExtension(GetStableGuid(identity, licenseMdFile), ".md")!, modTime);
920921
}
921922
}
922923

@@ -1045,17 +1046,17 @@ private async Task WritePackageCacheEntry(string packageName, NpmPackageCacheEnt
10451046
}
10461047
}
10471048

1048-
private static async Task WriteTextFileToTar(TarOutputStream tarOut, string filePath, string content, CancellationToken cancellationToken = default)
1049+
private static async Task WriteTextFileToTar(TarOutputStream tarOut, string filePath, string content, DateTime modTime, CancellationToken cancellationToken = default)
10491050
{
10501051
ArgumentNullException.ThrowIfNull(tarOut);
10511052
ArgumentNullException.ThrowIfNull(filePath);
10521053
ArgumentNullException.ThrowIfNull(content);
10531054

10541055
var buffer = Utf8EncodingNoBom.GetBytes(content);
1055-
await WriteBufferToTar(tarOut, filePath, buffer, cancellationToken);
1056+
await WriteBufferToTar(tarOut, filePath, buffer, modTime, cancellationToken);
10561057
}
10571058

1058-
private static async Task WriteBufferToTar(TarOutputStream tarOut, string filePath, byte[] buffer, CancellationToken cancellationToken = default)
1059+
private static async Task WriteBufferToTar(TarOutputStream tarOut, string filePath, byte[] buffer, DateTime modTime, CancellationToken cancellationToken = default)
10591060
{
10601061
ArgumentNullException.ThrowIfNull(tarOut);
10611062
ArgumentNullException.ThrowIfNull(filePath);
@@ -1065,7 +1066,7 @@ private static async Task WriteBufferToTar(TarOutputStream tarOut, string filePa
10651066
filePath = filePath.TrimStart('/');
10661067

10671068
var tarEntry = TarEntry.CreateTarEntry($"package/{filePath}");
1068-
tarEntry.ModTime = DateTime.UnixEpoch;
1069+
tarEntry.ModTime = modTime;
10691070
tarEntry.Size = buffer.Length;
10701071
await tarOut.PutNextEntryAsync(tarEntry, cancellationToken);
10711072
await tarOut.WriteAsync(buffer, cancellationToken);

0 commit comments

Comments
 (0)