@@ -236,14 +236,15 @@ private async Task BuildInternal()
236236 }
237237
238238 var packageId = packageName . ToLowerInvariant ( ) ;
239- var npmPackageId = $ "{ _unityScope } .{ packageId } ";
239+ var unityScope = ( packageEntry . UnityScope ?? _unityScope ) . ToLowerInvariant ( ) ;
240+ var npmPackageId = $ "{ unityScope } .{ packageId } ";
240241 NpmPackageCacheEntry ? cacheEntry = null ;
241242 NpmPackage ? npmPackage = null ;
242243 NpmPackageInfo ? npmPackageInfo = null ;
243244
244245 if ( ! forceUpdate && ! _npmPackageRegistry . Packages . TryGetValue ( npmPackageId , out npmPackage ) )
245246 {
246- if ( TryReadPackageCacheEntry ( packageId , out cacheEntry ) )
247+ if ( TryReadPackageCacheEntry ( unityScope , packageId , out cacheEntry ) )
247248 {
248249 npmPackage = cacheEntry . Package ! ;
249250 npmPackageInfo = cacheEntry . Info ! ;
@@ -270,8 +271,8 @@ private async Task BuildInternal()
270271 if ( npmPackage != null && npmPackage . Versions . TryGetValue ( npmCurrentVersion , out var existingVersion ) )
271272 {
272273 // If the package tgz exists, we don't need to regenerate it again
273- var packageTgz = new FileInfo ( GetUnityPackagePath ( packageIdentity , existingVersion ) ) ;
274- var packageSha1 = new FileInfo ( GetUnityPackageSha1Path ( packageIdentity , existingVersion ) ) ;
274+ var packageTgz = new FileInfo ( GetUnityPackagePath ( unityScope , packageIdentity , existingVersion ) ) ;
275+ var packageSha1 = new FileInfo ( GetUnityPackageSha1Path ( unityScope , packageIdentity , existingVersion ) ) ;
275276
276277 if ( packageTgz . Exists && packageTgz . Length > 0 && packageSha1 . Exists && packageSha1 . Length > 0 )
277278 {
@@ -347,7 +348,7 @@ private async Task BuildInternal()
347348 Author = npmPackageInfo . Author ,
348349 DisplayName = packageMeta . Title + _packageNameNuGetPostFix
349350 } ;
350- npmVersion . Distribution . Tarball = new Uri ( _rootHttpUri , $ "{ npmPackage . Id } /-/{ GetUnityPackageFileName ( packageIdentity , npmVersion ) } ") ;
351+ npmVersion . Distribution . Tarball = new Uri ( _rootHttpUri , $ "{ npmPackage . Id } /-/{ GetUnityPackageFileName ( unityScope , packageIdentity , npmVersion ) } ") ;
351352 npmVersion . Unity = _minimumUnityVersion ;
352353 npmPackage . Versions [ npmVersion . Version ] = npmVersion ;
353354
@@ -422,7 +423,8 @@ private async Task BuildInternal()
422423
423424 // Otherwise add the package as a dependency
424425 var depsId = resolvedDeps . Id . ToLowerInvariant ( ) ;
425- var key = $ "{ _unityScope } .{ depsId } ";
426+ var depsUnityScope = ( packageEntryDep ! . UnityScope ?? _unityScope ) . ToLowerInvariant ( ) ;
427+ var key = $ "{ depsUnityScope } .{ depsId } ";
426428 if ( ! npmVersion . Dependencies . ContainsKey ( key ) )
427429 {
428430 npmVersion . Dependencies . Add ( key , GetNpmVersion ( resolvedDeps . VersionRange . MinVersion ) ) ;
@@ -433,8 +435,8 @@ private async Task BuildInternal()
433435 // If we don't have any dependencies error, generate the package
434436 if ( ! hasDependencyErrors )
435437 {
436- bool packageConverted = await ConvertNuGetToUnityPackageIfDoesNotExist ( packageIdentity , npmPackageInfo , npmVersion , packageMeta , forceUpdate , packageEntry ) ;
437- npmPackage . Time [ npmCurrentVersion ] = packageMeta . Published ? . UtcDateTime ?? GetUnityPackageFileInfo ( packageIdentity , npmVersion ) . CreationTimeUtc ;
438+ bool packageConverted = await ConvertNuGetToUnityPackageIfDoesNotExist ( unityScope , packageIdentity , npmPackageInfo , npmVersion , packageMeta , forceUpdate , packageEntry ) ;
439+ npmPackage . Time [ npmCurrentVersion ] = packageMeta . Published ? . UtcDateTime ?? GetUnityPackageFileInfo ( unityScope , packageIdentity , npmVersion ) . CreationTimeUtc ;
438440
439441 // Copy repository info if necessary
440442 if ( update )
@@ -443,7 +445,7 @@ private async Task BuildInternal()
443445 }
444446
445447 // Update the cache entry
446- await WritePackageCacheEntry ( packageId , cacheEntry ) ;
448+ await WritePackageCacheEntry ( unityScope , packageId , cacheEntry ) ;
447449
448450 if ( packageConverted && IsRunningOnAzure )
449451 {
@@ -484,6 +486,7 @@ private static string GetNpmVersion(NuGetVersion currentVersion)
484486 /// </summary>
485487 private async Task < bool > ConvertNuGetToUnityPackageIfDoesNotExist
486488 (
489+ string unityScope ,
487490 PackageIdentity identity ,
488491 NpmPackageInfo npmPackageInfo ,
489492 NpmPackageVersion npmPackageVersion ,
@@ -495,18 +498,18 @@ RegistryEntry packageEntry
495498 // If we need to force the update, we delete the previous package+sha1 files
496499 if ( forceUpdate )
497500 {
498- DeleteUnityPackage ( identity , npmPackageVersion ) ;
501+ DeleteUnityPackage ( unityScope , identity , npmPackageVersion ) ;
499502 }
500503
501- if ( ! IsUnityPackageValid ( identity , npmPackageVersion ) || ! IsUnityPackageSha1Valid ( identity , npmPackageVersion ) )
504+ if ( ! IsUnityPackageValid ( unityScope , identity , npmPackageVersion ) || ! IsUnityPackageSha1Valid ( unityScope , identity , npmPackageVersion ) )
502505 {
503- await ConvertNuGetPackageToUnity ( identity , npmPackageInfo , npmPackageVersion , packageMeta , packageEntry ) ;
506+ await ConvertNuGetPackageToUnity ( unityScope , identity , npmPackageInfo , npmPackageVersion , packageMeta , packageEntry ) ;
504507
505508 return true ;
506509 }
507510 else
508511 {
509- npmPackageVersion . Distribution . Shasum = await ReadUnityPackageSha1 ( identity , npmPackageVersion ) ;
512+ npmPackageVersion . Distribution . Shasum = await ReadUnityPackageSha1 ( unityScope , identity , npmPackageVersion ) ;
510513
511514 return false ;
512515 }
@@ -517,14 +520,15 @@ RegistryEntry packageEntry
517520 /// </summary>
518521 private async Task ConvertNuGetPackageToUnity
519522 (
523+ string unityScope ,
520524 PackageIdentity identity ,
521525 NpmPackageInfo npmPackageInfo ,
522526 NpmPackageVersion npmPackageVersion ,
523527 IPackageSearchMetadata packageMeta ,
524528 RegistryEntry packageEntry
525529 )
526530 {
527- var unityPackageFileName = GetUnityPackageFileName ( identity , npmPackageVersion ) ;
531+ var unityPackageFileName = GetUnityPackageFileName ( unityScope , identity , npmPackageVersion ) ;
528532 var unityPackageFilePath = Path . Combine ( _rootPersistentFolder , unityPackageFileName ) ;
529533
530534 LogInformation ( $ "Converting NuGet package { identity } to Unity `{ unityPackageFileName } `") ;
@@ -834,7 +838,7 @@ RegistryEntry packageEntry
834838 using ( var stream = File . OpenRead ( unityPackageFilePath ) )
835839 {
836840 var sha1 = Sha1sum ( stream ) ;
837- await WriteUnityPackageSha1 ( identity , npmPackageVersion , sha1 ) ;
841+ await WriteUnityPackageSha1 ( unityScope , identity , npmPackageVersion , sha1 ) ;
838842 npmPackageVersion . Distribution . Shasum = sha1 ;
839843 }
840844 }
@@ -858,72 +862,75 @@ private static Guid GetStableGuid(PackageIdentity identity, string name)
858862 return StringToGuid ( $ "{ identity . Id } /{ name } *") ;
859863 }
860864
861- private FileInfo GetUnityPackageFileInfo ( PackageIdentity identity , NpmPackageVersion packageVersion )
865+ private FileInfo GetUnityPackageFileInfo ( string unityScope , PackageIdentity identity , NpmPackageVersion packageVersion )
862866 {
863- return new FileInfo ( GetUnityPackagePath ( identity , packageVersion ) ) ;
867+ return new FileInfo ( GetUnityPackagePath ( unityScope , identity , packageVersion ) ) ;
864868 }
865869
866- private string GetUnityPackageFileName ( PackageIdentity identity , NpmPackageVersion packageVersion )
870+ private string GetUnityPackageFileName ( string unityScope , PackageIdentity identity , NpmPackageVersion packageVersion )
867871 {
868- return $ "{ _unityScope } .{ identity . Id . ToLowerInvariant ( ) } -{ packageVersion . Version } .tgz";
872+ return $ "{ unityScope } .{ identity . Id . ToLowerInvariant ( ) } -{ packageVersion . Version } .tgz";
869873 }
870874
871- private string GetUnityPackageDescFileName ( string packageName )
875+ private string GetUnityPackageDescFileName ( string unityScope , string packageName )
872876 {
873- return $ "{ _unityScope } .{ packageName } .json";
877+ return $ "{ unityScope } .{ packageName } .json";
874878 }
875879
876- private string GetUnityPackageSha1FileName ( PackageIdentity identity , NpmPackageVersion packageVersion )
880+ private string GetUnityPackageSha1FileName ( string unityScope , PackageIdentity identity , NpmPackageVersion packageVersion )
877881 {
878- return $ "{ _unityScope } .{ identity . Id . ToLowerInvariant ( ) } -{ packageVersion . Version } .sha1";
882+ return $ "{ unityScope } .{ identity . Id . ToLowerInvariant ( ) } -{ packageVersion . Version } .sha1";
879883 }
880884
881- private void DeleteUnityPackage ( PackageIdentity identity , NpmPackageVersion packageVersion )
885+ private void DeleteUnityPackage ( string unityScope , PackageIdentity identity , NpmPackageVersion packageVersion )
882886 {
883- var packageFile = new FileInfo ( GetUnityPackagePath ( identity , packageVersion ) ) ;
887+ var packageFile = new FileInfo ( GetUnityPackagePath ( unityScope , identity , packageVersion ) ) ;
884888 if ( packageFile . Exists )
885889 {
886890 packageFile . Delete ( ) ;
887891 }
888- var sha1File = new FileInfo ( GetUnityPackageSha1Path ( identity , packageVersion ) ) ;
892+ var sha1File = new FileInfo ( GetUnityPackageSha1Path ( unityScope , identity , packageVersion ) ) ;
889893 if ( sha1File . Exists )
890894 {
891895 sha1File . Delete ( ) ;
892896 }
893897 }
894898
895- private bool IsUnityPackageValid ( PackageIdentity identity , NpmPackageVersion packageVersion )
899+ private bool IsUnityPackageValid ( string unityScope , PackageIdentity identity , NpmPackageVersion packageVersion )
896900 {
897- var packageFile = new FileInfo ( GetUnityPackagePath ( identity , packageVersion ) ) ;
901+ var packageFile = new FileInfo ( GetUnityPackagePath ( unityScope , identity , packageVersion ) ) ;
898902 return packageFile . Exists && packageFile . Length > 0 ;
899903 }
900904
901- private bool IsUnityPackageSha1Valid ( PackageIdentity identity , NpmPackageVersion packageVersion )
905+ private bool IsUnityPackageSha1Valid ( string unityScope , PackageIdentity identity , NpmPackageVersion packageVersion )
902906 {
903- var sha1File = new FileInfo ( GetUnityPackageSha1Path ( identity , packageVersion ) ) ;
907+ var sha1File = new FileInfo ( GetUnityPackageSha1Path ( unityScope , identity , packageVersion ) ) ;
904908 return sha1File . Exists && sha1File . Length > 0 ;
905909 }
906910
907- private async Task < string > ReadUnityPackageSha1 ( PackageIdentity identity , NpmPackageVersion packageVersion )
911+ private async Task < string > ReadUnityPackageSha1 ( string unityScope , PackageIdentity identity , NpmPackageVersion packageVersion )
908912 {
909- return await File . ReadAllTextAsync ( GetUnityPackageSha1Path ( identity , packageVersion ) ) ;
913+ return await File . ReadAllTextAsync ( GetUnityPackageSha1Path ( unityScope , identity , packageVersion ) ) ;
910914 }
911915
912- private async Task WriteUnityPackageSha1 ( PackageIdentity identity , NpmPackageVersion packageVersion , string sha1 )
916+ private async Task WriteUnityPackageSha1 ( string unityScope , PackageIdentity identity , NpmPackageVersion packageVersion , string sha1 )
913917 {
914- await File . WriteAllTextAsync ( GetUnityPackageSha1Path ( identity , packageVersion ) , sha1 ) ;
918+ await File . WriteAllTextAsync ( GetUnityPackageSha1Path ( unityScope , identity , packageVersion ) , sha1 ) ;
915919 }
916920
917- private string GetUnityPackagePath ( PackageIdentity identity , NpmPackageVersion packageVersion ) => Path . Combine ( _rootPersistentFolder , GetUnityPackageFileName ( identity , packageVersion ) ) ;
921+ private string GetUnityPackagePath ( string unityScope , PackageIdentity identity , NpmPackageVersion packageVersion )
922+ => Path . Combine ( _rootPersistentFolder , GetUnityPackageFileName ( unityScope , identity , packageVersion ) ) ;
918923
919- private string GetUnityPackageSha1Path ( PackageIdentity identity , NpmPackageVersion packageVersion ) => Path . Combine ( _rootPersistentFolder , GetUnityPackageSha1FileName ( identity , packageVersion ) ) ;
924+ private string GetUnityPackageSha1Path ( string unityScope , PackageIdentity identity , NpmPackageVersion packageVersion )
925+ => Path . Combine ( _rootPersistentFolder , GetUnityPackageSha1FileName ( unityScope , identity , packageVersion ) ) ;
920926
921- private string GetUnityPackageDescPath ( string packageName ) => Path . Combine ( _rootPersistentFolder , GetUnityPackageDescFileName ( packageName ) ) ;
927+ private string GetUnityPackageDescPath ( string unityScope , string packageName )
928+ => Path . Combine ( _rootPersistentFolder , GetUnityPackageDescFileName ( unityScope , packageName ) ) ;
922929
923- private bool TryReadPackageCacheEntry ( string packageName , [ NotNullWhen ( true ) ] out NpmPackageCacheEntry ? cacheEntry )
930+ private bool TryReadPackageCacheEntry ( string unityScope , string packageName , [ NotNullWhen ( true ) ] out NpmPackageCacheEntry ? cacheEntry )
924931 {
925932 cacheEntry = null ;
926- var path = GetUnityPackageDescPath ( packageName ) ;
933+ var path = GetUnityPackageDescPath ( unityScope , packageName ) ;
927934
928935 if ( ! File . Exists ( path ) ) return false ;
929936
@@ -945,9 +952,9 @@ private bool TryReadPackageCacheEntry(string packageName, [NotNullWhen(true)] ou
945952 return false ;
946953 }
947954
948- private async Task WritePackageCacheEntry ( string packageName , NpmPackageCacheEntry cacheEntry )
955+ private async Task WritePackageCacheEntry ( string unityScope , string packageName , NpmPackageCacheEntry cacheEntry )
949956 {
950- var path = GetUnityPackageDescPath ( packageName ) ;
957+ var path = GetUnityPackageDescPath ( unityScope , packageName ) ;
951958 var newJson = cacheEntry . ToJson ( ) ;
952959 // Only update if entry is different
953960 if ( ! string . Equals ( newJson , cacheEntry . Json , StringComparison . InvariantCulture ) )
0 commit comments