123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using SRF;
- using UnityEngine;
- using UnityEditor;
- #pragma warning disable 162
- namespace SRDebugger.Editor
- {
- [InitializeOnLoad]
- static class Migrations
- {
- static Migrations()
- {
- RunMigrations();
- }
- private const bool EnableLog = false;
- public class Migration
- {
- public readonly string Id;
- public readonly string[] ObsoleteFiles;
- public Migration(string id, string[] obsoleteFiles)
- {
- Id = id;
- ObsoleteFiles = obsoleteFiles;
- }
- }
- public static List<Migration> AvailableMigrations = new List<Migration>()
- {
- new Migration("DeleteOldEditorResources", new[]
- {
- "Editor/Resources/SRDebugger/BG_Dark.png",
- "Editor/Resources/SRDebugger/BG_Light.png",
- "Editor/Resources/SRDebugger/DemoSprite.png",
- "Editor/Resources/SRDebugger/Logo_DarkBG.png",
- "Editor/Resources/SRDebugger/Logo_LightBG.png",
- "Editor/Resources/SRDebugger/WelcomeLogo_DarkBG.png",
- "Editor/Resources/SRDebugger/WelcomeLogo_LightBG.png",
- "Editor/Resources/SRDebugger/Icons/Dark/console-25.png",
- "Editor/Resources/SRDebugger/Icons/Dark/options-25.png",
- "Editor/Resources/SRDebugger/Icons/Dark/profiler-25.png",
- "Editor/Resources/SRDebugger/Icons/Light/console-25.png",
- "Editor/Resources/SRDebugger/Icons/Light/options-25.png",
- "Editor/Resources/SRDebugger/Icons/Light/profiler-25.png",
- })
- };
- public static void RunMigrations(bool forceRun = false)
- {
- if(EnableLog)
- Debug.Log("[SRDebugger] Running Migrations...");
- foreach (var m in AvailableMigrations)
- {
- var key = GetProjectPrefsKey(m.Id);
- if (!forceRun && EditorPrefs.GetBool(key, false))
- {
- continue;
- }
- EditorPrefs.SetBool(key, true);
- RunMigration(m);
- }
- }
- public static void RunMigration(Migration migration)
- {
- if (EnableLog)
- Debug.Log("Running Migration: " + migration.Id);
- var assetPaths = AssetDatabase.GetAllAssetPaths();
- var root = new DirectoryInfo(SRInternalEditorUtil.GetRootPath());
- if(EnableLog)
- Debug.Log("Using Root Path: " + root.FullName);
- var obsoleteAssets = migration.ObsoleteFiles.Select(p => root + "/" + p).ToList();
- var deleteQueue = assetPaths.Where(assetPath => obsoleteAssets.Contains(assetPath)).ToList();
- if (deleteQueue.Count == 0)
- return;
- var message = "The following files used by a previous version of SRDebugger are obsolete and can be safely deleted: \n\n" +
- deleteQueue.Aggregate((s1, s2) => s1 + "\n" + s2);
- Debug.Log(message);
- message += "\n\nIt is recommended to delete these files.";
- if (EditorUtility.DisplayDialog("SRDebugger Migration Assistant",
- message, "Delete Now", "Ignore"))
- {
- foreach (var s in deleteQueue)
- {
- Debug.Log("[SRDebugger] Deleting Asset {0}".Fmt(s));
- if (!AssetDatabase.DeleteAsset(s))
- {
- Debug.LogWarning("[SRDebugger] Error deleting asset {0}".Fmt(s));
- }
- }
- Debug.Log("[SRDebugger] Migration Complete");
- }
- else
- {
- EditorUtility.DisplayDialog("SRDebugger Migration Assitant",
- "You can run this migration check again via the \"Run Migrations\" button in the advanced tab of the SRDebugger settings window.", "OK");
- }
- }
- private static string GetProjectPrefsKey(string key)
- {
- return "SRDebugger_Migration_" + Application.dataPath + "_" + key;
- }
- }
- }
|