Пример #1
0
 public static void ProcessDir(DirectoryInfo directoryInfo, string outDir)
 {
     if (!Directory.Exists(outDir)) Directory.CreateDirectory(outDir);
     //
     DirectoryInfo outDirInfo = new DirectoryInfo(outDir);
     //
     // Directories:
     //
     ObsoleteDirs obsoleteDirs = new ObsoleteDirs(outDirInfo);
     foreach (DirectoryInfo subDirectoryInfo in directoryInfo.EnumerateDirectories())
     {
         obsoleteDirs.RemoveDirFromObsoleteList(subDirectoryInfo);
         //
         ProcessDir(subDirectoryInfo, Path.Combine(outDir, subDirectoryInfo.Name));
     }
     obsoleteDirs.DeleteDirs();
     //
     // Files:
     //
     ObsoleteFiles obsoleteFiles = new ObsoleteFiles(outDirInfo);
     foreach (FileInfo fileInfo in directoryInfo.EnumerateFiles())
     {
         string outFileName = processFile(fileInfo, outDir);
         obsoleteFiles.RemoveFileFromObsoleteList(outFileName);
     }
     obsoleteFiles.DeleteFiles();
 }
Пример #2
0
 private bool processDir(TestDirNode testDirNode, DirectoryInfo directoryInfo, string outDir)
 {
     bool result = false;
     //
     if (!Directory.Exists(outDir))
     {
         Directory.CreateDirectory(outDir);
     }
     DirectoryInfo outDirInfo = new DirectoryInfo(outDir);
     //
     // Directories:
     //
     ObsoleteDirs obsoleteDirs = new ObsoleteDirs(outDirInfo);
     foreach (DirectoryInfo subDirectoryInfo in directoryInfo.EnumerateDirectories())
     {
         TestDirNode subTestDirNode = new TestDirNode(subDirectoryInfo.Name);
         if (processDir(subTestDirNode, subDirectoryInfo, Path.Combine(outDir, subDirectoryInfo.Name)))
         {
             obsoleteDirs.RemoveDirFromObsoleteList(subDirectoryInfo);
             testDirNode.AddSubDir(subTestDirNode);
             result = true;
         }
     }
     obsoleteDirs.DeleteDirs();
     //
     // Files:
     //
     ObsoleteFiles obsoleteFiles = new ObsoleteFiles(outDirInfo);
     foreach (FileInfo fileInfo in directoryInfo.EnumerateFiles("*.spec.js"))
     {
         string outFileName = fileInfo.Name + ".html";
         obsoleteFiles.RemoveFileFromObsoleteList(outFileName);
         string fullOutFileName = Path.Combine(outDir, outFileName);
         obsoleteFiles.RemoveFileFromObsoleteList(outFileName);
         //
         //Console.WriteLine(fileInfo.FullName);
         //Console.WriteLine("  " + fullOutFileName);
         //
         TestResultsInfo testResultInfo = RunMocha.Run(fileInfo.FullName, fullOutFileName);
         //TestResultsInfo testResultInfo = new TestResultsInfo();
         //
         //Console.WriteLine(string.Format("total={0} passed={1}", testResultInfo.Total, testResultInfo.Passed));
         TestItemNode itemNode = new TestItemNode() { Name = fileInfo.Name, ResultsInfo = testResultInfo };
         testDirNode.AddItem(itemNode);
         //
         //
         result = true;
     }
     obsoleteFiles.DeleteFiles();
     //
     if (!result)
     {
         Directory.Delete(outDir);
     }
     //
     return result;
 }
Пример #3
0
        // -------------------------------------
        //              processDir()
        // -------------------------------------

        private static void processDir(DirectoryInfo directoryInfo, string outDir)
        {
            if (!Directory.Exists(outDir))
            {
                Directory.CreateDirectory(outDir);
            }
            DirectoryInfo outDirInfo = new DirectoryInfo(outDir);
            //
            // Directories:
            //
            ObsoleteDirs obsoleteDirs = new ObsoleteDirs(outDirInfo);
            foreach (DirectoryInfo subDirectoryInfo in directoryInfo.EnumerateDirectories())
            {
                obsoleteDirs.RemoveDirFromObsoleteList(subDirectoryInfo);
                //
                processDir(subDirectoryInfo, Path.Combine(outDir, subDirectoryInfo.Name));
            }
            obsoleteDirs.DeleteDirs();
            //
            // Files:
            //
            ObsoleteFiles obsoleteFiles = new ObsoleteFiles(outDirInfo);
            foreach (FileInfo fileInfo in directoryInfo.EnumerateFiles())
            {
                //obsoleteFiles.RemoveFileFromObsoleteList(fileInfo);
                //
                string contentHtml = File.ReadAllText(fileInfo.FullName);
                //
                string outFileName = Path.ChangeExtension(fileInfo.Name, ".html");
                obsoleteFiles.RemoveFileFromObsoleteList(outFileName);
                string fullOutFileName = Path.Combine(outDir, outFileName);
                //
                writePage(fullOutFileName, contentHtml);
            }
            obsoleteFiles.DeleteFiles();
        }
    /// <summary>
    /// 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.
    /// </summary>
    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())  + ")");
                }
            }
        }
    }