@@ -230,6 +230,8 @@ private static Dictionary<string, UnityPackageManagerRegistry> ReadRegistriesFro
230230 /// <param name="invertSelection">If false, adds the selected registries and removes the
231231 /// unselected registries. If true, removes the selected registries and adds the unselected
232232 /// registries.</param>
233+ /// <param name="addedRegistries">If specified, is extended with the list of registries added
234+ /// to the manifest.<param>
233235 /// <returns>true if successful, false otherwise.</returns>
234236 private static bool SyncRegistriesToManifest (
235237 PackageManifestModifier manifestModifier ,
@@ -238,7 +240,8 @@ private static bool SyncRegistriesToManifest(
238240 HashSet < string > selectedRegistryUrls ,
239241 bool addRegistries = true ,
240242 bool removeRegistries = true ,
241- bool invertSelection = false ) {
243+ bool invertSelection = false ,
244+ List < UnityPackageManagerRegistry > addedRegistries = null ) {
242245 // Build a list of registries to add to and remove from the manifest.
243246 var registriesToAdd = new List < UnityPackageManagerRegistry > ( ) ;
244247 var registriesToRemove = new List < UnityPackageManagerRegistry > ( ) ;
@@ -280,6 +283,7 @@ private static bool SyncRegistriesToManifest(
280283 "Added registries to {0}:\n {1}" ,
281284 PackageManifestModifier . MANIFEST_FILE_PATH ,
282285 UnityPackageManagerRegistry . ToString ( registriesToAdd ) ) ) ;
286+ if ( addedRegistries != null ) addedRegistries . AddRange ( registriesToAdd ) ;
283287 }
284288 if ( registriesToRemove . Count > 0 ) {
285289 logger . Log ( String . Format (
@@ -379,13 +383,19 @@ internal static void UpdateManifest(ManifestModificationMode mode,
379383
380384 // Applies the manifest modification based upon the modification mode.
381385 Action < HashSet < string > > syncRegistriesToManifest = ( urlSelectionToApply ) => {
386+ var addedRegistries = new List < UnityPackageManagerRegistry > ( ) ;
382387 SyncRegistriesToManifest ( modifier , xmlRegistries , manifestRegistries ,
383388 urlSelectionToApply ,
384389 addRegistries : ( mode == ManifestModificationMode . Add ||
385390 mode == ManifestModificationMode . Modify ) ,
386391 removeRegistries : ( mode == ManifestModificationMode . Remove ||
387392 mode == ManifestModificationMode . Modify ) ,
388- invertSelection : mode == ManifestModificationMode . Remove ) ;
393+ invertSelection : mode == ManifestModificationMode . Remove ,
394+ addedRegistries : addedRegistries ) ;
395+ // If any registries were added try migration if enabled.
396+ if ( addedRegistries . Count > 0 && PromptToMigratePackages ) {
397+ PackageMigrator . MigratePackages ( ) ;
398+ }
389399 } ;
390400
391401 if ( xmlRegistries . Count > 0 ) {
@@ -470,12 +480,15 @@ internal static void RestoreDefaultSettings() {
470480 "Google.UnityPackageManagerResolver.Enable" ;
471481 private const string PreferencePromptToAddRegistries =
472482 "Google.UnityPackageManagerResolver.PromptToAddRegistries" ;
483+ private const string PreferencePromptToMigratePackages =
484+ "Google.UnityPackageManagerResolver.PromptToMigratePackages" ;
473485 private const string PreferenceVerboseLoggingEnabled =
474486 "Google.UnityPackageManagerResolver.VerboseLoggingEnabled" ;
475487 // List of preference keys, used to restore default settings.
476488 private static string [ ] PreferenceKeys = new [ ] {
477489 PreferenceEnable ,
478490 PreferencePromptToAddRegistries ,
491+ PreferencePromptToMigratePackages ,
479492 PreferenceVerboseLoggingEnabled
480493 } ;
481494
@@ -531,6 +544,15 @@ public static bool PromptToAddRegistries {
531544 set { settings . SetBool ( PreferencePromptToAddRegistries , value ) ; }
532545 }
533546
547+ /// <summary>
548+ /// Enable / disable prompting the user to migrate Version Handler to UPM packages after a
549+ /// registry has been added.
550+ /// </summary>
551+ public static bool PromptToMigratePackages {
552+ get { return settings . GetBool ( PreferencePromptToMigratePackages , defaultValue : true ) ; }
553+ set { settings . SetBool ( PreferencePromptToMigratePackages , value ) ; }
554+ }
555+
534556 /// <summary>
535557 /// Enable / disable verbose logging.
536558 /// </summary>
0 commit comments