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()) + ")");
}
}
}
}