Google.VersionHandler.UpdateVersionedAssets C# (CSharp) Method

UpdateVersionedAssets() public static method

Find all files in the asset database with multiple version numbers encoded in their filename, select the most recent revisions and delete obsolete versions and files referenced by old manifests that are not present in the most recent manifests.
public static UpdateVersionedAssets ( bool forceUpdate = false ) : void
forceUpdate bool
return void
    public static void UpdateVersionedAssets(bool forceUpdate = false) {
        // If this module is disabled do nothing.
        if (!forceUpdate && !Enabled) return;

        var metadataSet = FileMetadataSet.FindWithPendingUpdates(
            FileMetadataSet.ParseFromFilenames(FindAllAssets()));

        if (metadataSet.EnableMostRecentPlugins()) {
            AssetDatabase.Refresh();
        }

        var obsoleteFiles = new ObsoleteFiles(
            ManifestReferences.FindAndReadManifests(metadataSet), metadataSet);

        // Obsolete files that are no longer reference can be safely
        // deleted, prompt the user for confirmation if they have the option
        // enabled.
        bool deleteFiles = true;
        if (obsoleteFiles.unreferenced.Count > 0) {
            if (CleanUpPromptEnabled && deleteFiles) {
                deleteFiles = EditorUtility.DisplayDialog(
                    PLUGIN_NAME,
                    "Would you like to delete the following obsolete files " +
                    "in your project?\n\n" +
                    String.Join("\n", new List<string>(
                                        obsoleteFiles.unreferenced).ToArray()),
                    "Yes", cancel: "No");
            }
            foreach (var filename in obsoleteFiles.unreferenced) {
                if (deleteFiles) {
                    MoveAssetToTrash(filename);
                } else if (VerboseLoggingEnabled) {
                    UnityEngine.Debug.Log("Leaving obsolete file: " +
                                          filename);
                }
            }
        }

        // If any obsolete referenced files are present, prompt the user for
        // confirmation of deletion.
        if (obsoleteFiles.referenced.Count > 0) {
            List<string> referencesString = new List<string>();
            foreach (var item in obsoleteFiles.referenced) {
                List<string> lines = new List<string>();
                lines.Add(item.Key);
                foreach (var reference in item.Value) {
                    lines.Add("    " + reference);
                }
                referencesString.Add(String.Join("\n", lines.ToArray()));
            }
            deleteFiles = EditorUtility.DisplayDialog(
               PLUGIN_NAME,
               "The following obsolete files are referenced by packages in " +
               "your project, would you like to delete them?\n\n" +
               String.Join("\n", referencesString.ToArray()),
               "Yes", cancel: "No");

            foreach (var item in obsoleteFiles.referenced) {
                if (deleteFiles) {
                    MoveAssetToTrash(item.Key);
                } else if (VerboseLoggingEnabled) {
                    UnityEngine.Debug.Log(
                        "Leaving obsolete file: " + item.Key + " | " +
                        "Referenced by (" +
                        String.Join(", ", item.Value.ToArray())  + ")");
                }
            }
        }
    }