示例#1
0
 public static void Clear()
 {
     CSFileTools.DeleteFile(IssuesResultsPath);
     CSFileTools.DeleteFile(CleanerResultsPath);
     CSFileTools.DeleteFile(ReferencesResultsPath);
     CSFileTools.DeleteFile(ReferencesSelectionPath);
 }
示例#2
0
        private static ProjectSettings LoadOrCreate()
        {
            ProjectSettings settings;

            if (!File.Exists(Path))
            {
                settings = CreateNewSettingsFile();
            }
            else
            {
                settings = LoadInstance();

                if (settings == null)
                {
                    CSFileTools.DeleteFile(Path);
                    settings = CreateNewSettingsFile();
                }

                if (settings.version != Maintainer.Version)
                {
                    MigrateSettings(settings);
                    SearchResultsStorage.Clear();
                }
            }

            settings.hideFlags = HideFlags.HideAndDontSave;
            settings.version   = Maintainer.Version;

            return(settings);
        }
 public static void Clear()
 {
     CSFileTools.DeleteFile(IssuesResultsPath);
     CSFileTools.DeleteFile(CleanerResultsPath);
     CSFileTools.DeleteFile(ReferencesResultsPath);
     CSFileTools.DeleteFile(ReferencesLastSearchedPath);
 }
示例#4
0
        private static T[] LoadItemsFromJson <T>(string path)
        {
            var sw = Stopwatch.StartNew();

            T[] results = null;

            if (File.Exists(path))
            {
                var stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

                if (stream.Length > 500000)
                {
                    EditorUtility.DisplayProgressBar("Maintainer", "Loading items, please wait...", 0.5f);
                }

                try
                {
                    var streamReader = new StreamReader(stream);
                    var wrapper      = JsonUtility.FromJson <ItemsWrapper <T> >(streamReader.ReadToEnd());
                    results = wrapper.items;
                }
                catch (Exception e)
                {
                    Debug.LogWarning(Maintainer.LogPrefix + "Can't read search results from " + path + ".\nThey might be generated at different Maintainer version.\n" + e);
                }
                finally
                {
                    stream.Close();
                    EditorUtility.ClearProgressBar();
                }

                if (results == null)
                {
                    results = new T[0];
                    CSFileTools.DeleteFile(path);
                }
            }
            else
            {
                results = new T[0];
            }

            sw.Stop();
            //Debug.Log("LoadItems time: " + sw.ElapsedMilliseconds);

            return(results);
        }
        private static T[] LoadItems <T>(string path)
        {
            T[] results = null;

            if (File.Exists(path))
            {
                var bf     = new BinaryFormatter();
                var stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

                if (stream.Length > 500000)
                {
                    EditorUtility.DisplayProgressBar("Maintainer", "Loading items, please wait...", 0.5f);
                }

                try
                {
                    results = bf.Deserialize(stream) as T[];
                }
                catch (Exception e)
                {
                    Debug.LogWarning(Maintainer.LogPrefix + "Can't read search results from " + path + ".\nThey might be generated at different Maintainer version.\n" + e);
                }
                finally
                {
                    stream.Close();
                    EditorUtility.ClearProgressBar();
                }

                if (results == null)
                {
                    results = new T[0];
                    CSFileTools.DeleteFile(path);
                }
            }
            else
            {
                results = new T[0];
            }

            return(results);
        }
        private static MaintainerPersonalSettings LoadOrCreate()
        {
            MaintainerPersonalSettings settings;

            if (!File.Exists(Path))
            {
                settings = CreateNewSettingsFile();
            }
            else
            {
                settings = LoadInstance();

                if (settings == null)
                {
                    CSFileTools.DeleteFile(Path);
                    settings = CreateNewSettingsFile();
                }
            }

            settings.version = Maintainer.Version;

            return(settings);
        }
示例#7
0
 public static void Delete()
 {
     cachedMap = null;
     CSFileTools.DeleteFile(MapPath);
 }
        protected override bool PerformClean()
        {
            bool result;

            if (ProjectSettings.Cleaner.useTrashBin)
            {
                result = AssetDatabase.MoveAssetToTrash(assetDatabasePath);
            }
            else
            {
                switch (type)
                {
                case RecordType.EmptyFolder:
                {
                    if (Directory.Exists(path))
                    {
                        Directory.Delete(path, true);
                    }
                    break;
                }

                case RecordType.UnreferencedAsset:
                {
                    CSFileTools.DeleteFile(path);
                    break;
                }

                case RecordType.Error:
                    break;

                case RecordType.Other:
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }

                var metaPath = path + ".meta";
                CSFileTools.DeleteFile(metaPath);
                result = !(Directory.Exists(path) || File.Exists(path));
            }

            if (!result)
            {
                Debug.LogWarning(Maintainer.LogPrefix + ProjectCleaner.ModuleName + " can't clean asset: " + beautyPath);
            }
            else
            {
                var directory = CSPathTools.EnforceSlashes(Path.GetDirectoryName(path));
                if (!string.IsNullOrEmpty(directory) && Directory.Exists(directory))
                {
                    var filesInDir = Directory.GetFiles(directory, "*", SearchOption.TopDirectoryOnly);

                    if (filesInDir.Length == 0)
                    {
                        CreateEmptyFolderRecord(directory).Clean();
                    }
                }
            }

            return(result);
        }
示例#9
0
 /// <summary>
 /// Call to remove all Maintainer Settings (including personal settings).
 /// </summary>
 public static void Delete()
 {
     instance = null;
     CSFileTools.DeleteFile(Path);
     UserSettings.Delete();
 }
示例#10
0
 /// <summary>
 /// Call to remove all Maintainer Settings (including personal settings).
 /// </summary>
 public static void Delete()
 {
     instance = null;
     CSFileTools.DeleteFile(Path);
     MaintainerPersonalSettings.Delete();
 }
示例#11
0
        private static MaintainerSettings LoadOrCreate()
        {
            MaintainerSettings settings;

            if (!File.Exists(Path))
            {
                settings = CreateNewSettingsFile();
            }
            else
            {
                settings = LoadInstance();

                if (settings == null)
                {
                    CSFileTools.DeleteFile(Path);
                    settings = CreateNewSettingsFile();
                }

                if (settings.version != Maintainer.Version)
                {
                    if (string.IsNullOrEmpty(settings.version))
                    {
                        MigrateAllIgnores(settings.issuesFinderSettings.pathIgnores, ref settings.issuesFinderSettings.pathIgnoresFilters, FilterKind.Path);
                        settings.issuesFinderSettings.pathIgnores = null;

                        MigrateAllIgnores(settings.issuesFinderSettings.componentIgnores, ref settings.issuesFinderSettings.componentIgnoresFilters, FilterKind.Type);
                        settings.issuesFinderSettings.componentIgnores = null;

                        MigrateAllIgnores(settings.issuesFinderSettings.pathIncludes, ref settings.issuesFinderSettings.pathIncludesFilters, FilterKind.Path);
                        settings.issuesFinderSettings.pathIncludes = null;

                        MigrateAllIgnores(settings.issuesFinderSettings.sceneIncludes, ref settings.issuesFinderSettings.sceneIncludesFilters, FilterKind.Path);
                        settings.issuesFinderSettings.sceneIncludes = null;

                        MigrateAllIgnores(settings.projectCleanerSettings.pathIgnores, ref settings.projectCleanerSettings.pathIgnoresFilters, FilterKind.Path);
                        settings.projectCleanerSettings.pathIgnores = null;

                        MigrateAllIgnores(settings.projectCleanerSettings.sceneIgnores, ref settings.projectCleanerSettings.sceneIgnoresFilters, FilterKind.Path);
                        settings.projectCleanerSettings.sceneIgnores = null;

                        settings.projectCleanerSettings.AddDefaultFilters();
                    }

                    if (new Version(settings.version) < new Version("1.4.1.0"))
                    {
                        if (!CSFilterTools.IsValueMatchesAnyFilterOfKind("dummy.asmdef", settings.projectCleanerSettings.pathIgnoresFilters, FilterKind.Extension))
                        {
                            ArrayUtility.Add(ref settings.projectCleanerSettings.pathIgnoresFilters, FilterItem.Create(".asmdef", FilterKind.Extension));
                        }
                    }

                    if (new Version(settings.version) < new Version("1.5.1"))
                    {
                        if (settings.projectCleanerSettings.pathIgnoresFilters != null &&
                            settings.projectCleanerSettings.pathIgnoresFilters.Length > 0)
                        {
                            var defaultFilters   = settings.projectCleanerSettings.GetDefaultFilters();
                            var mandatoryFilters = settings.projectCleanerSettings.MandatoryFilters;

                            var modificationsLog = new StringBuilder();

                            for (var i = settings.projectCleanerSettings.pathIgnoresFilters.Length - 1; i >= 0; i--)
                            {
                                var pathIgnoresFilter = settings.projectCleanerSettings.pathIgnoresFilters[i];
                                if (pathIgnoresFilter.ignoreCase)
                                {
                                    continue;
                                }

                                var isMandatory = false;

                                if (CSFilterTools.IsValueMatchesAnyFilterOfKind(pathIgnoresFilter.value, mandatoryFilters, pathIgnoresFilter.kind))
                                {
                                    isMandatory = true;
                                }
                                else
                                {
                                    switch (pathIgnoresFilter.kind)
                                    {
                                    case FilterKind.Extension:
                                        var extension = pathIgnoresFilter.value.ToLowerInvariant();
                                        if (extension == ".dll" ||
                                            extension == ".asmdef" ||
                                            extension == ".mdb" ||
                                            extension == ".xml" ||
                                            extension == ".rsp")
                                        {
                                            isMandatory = true;
                                        }
                                        break;

                                    case FilterKind.FileName:
                                        var value = pathIgnoresFilter.value.ToLowerInvariant();
                                        if (value == "readme" ||
                                            value == "manual")
                                        {
                                            isMandatory = true;
                                        }
                                        break;
                                    }
                                }

                                if (isMandatory)
                                {
                                    modificationsLog.Append("Removing Project Cleaner filter '")
                                    .Append(pathIgnoresFilter.value)
                                    .AppendLine("': built-in mandatory filter covers it now.");
                                    ArrayUtility.RemoveAt(ref settings.projectCleanerSettings.pathIgnoresFilters, i);
                                    continue;
                                }

                                if (CSFilterTools.IsValueMatchesAnyFilterOfKind(pathIgnoresFilter.value, defaultFilters, pathIgnoresFilter.kind))
                                {
                                    modificationsLog.Append("Changing default Project Cleaner filter '")
                                    .Append(pathIgnoresFilter.value)
                                    .AppendLine("': ignore case setting to 'true' for better accuracy.");
                                    pathIgnoresFilter.ignoreCase = true;
                                }
                            }

                            if (modificationsLog.Length > 0)
                            {
                                modificationsLog.Insert(0, "Maintainer settings updated, read below for details\n");
                                Debug.Log(Maintainer.LogPrefix + modificationsLog);
                            }
                        }
                    }

                    SearchResultsStorage.Clear();
                    //AssetsMap.Delete();
                }
            }

            settings.hideFlags = HideFlags.HideAndDontSave;
            settings.version   = Maintainer.Version;

            return(settings);
        }