@@ -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