//save when we last saw files and delete them after some reasonable timeout //[MenuItem("asink/ManualTest")] public static void manualTest() { AssetDatabase.CreateFolder("Assets", "Foobar"); var adapter = new UnityDirectoryAdapter(); string directoryLocation = adapter.assetPathToFullPath("Assets/Foobar"); var things = new ContainerForWhitelistedFolders { listOfWhitelistedFolders = new List<FolderTemporarilyWhitelisted> { new FolderTemporarilyWhitelisted { fullPath = "Assets/Foobar", //ticksSerializedAt = DateTime.Now.Subtract(new TimeSpan(0,0,10)).Ticks, //ticksSerializedAt = DateTime.Now.Subtract(new TimeSpan(0,0,4,30)).Ticks, ticksSerializedAt = DateTime.Now.Ticks } } }; SaveTemporarilyWhitelistedFiles(things.listOfWhitelistedFolders); List<string> toDelete = checkEmptyFolders(new[] { directoryLocation }); Debug.Log("To delete:" + toDelete.Join(",")); }
private static List<string> checkEmptyFolders(string[] importedAssets) { var deleteImmediately = new List<string>(); List<FolderTemporarilyWhitelisted> toCheckIfIShouldDelete = getTemporarilyWhitelistedFiles(); var checkAgainLater = new List<FolderTemporarilyWhitelisted>(); foreach(string justImported in importedAssets) { if(!isDirectory(justImported)) continue; checkAgainLater.Add(new FolderTemporarilyWhitelisted { fullPath = justImported, ticksSerializedAt = DateTime.Now.Ticks }); } var directoryAdapter = new UnityDirectoryAdapter(); foreach(FolderTemporarilyWhitelisted folderTemporarilyWhitelisted in toCheckIfIShouldDelete) { DateTime timeToCutOff = (new DateTime(folderTemporarilyWhitelisted.ticksSerializedAt) + AmountToWaitBeforeAutoDeletingEmptyDirectory); string path = directoryAdapter.assetPathToFullPath(folderTemporarilyWhitelisted.fullPath); Debug.Log(string.Format("folder whitelisted:{2} DateTime.now:{0} vs timeToCutOff:{1}", DateTime.Now, timeToCutOff, folderTemporarilyWhitelisted.fullPath)); if(DateTime.Now > timeToCutOff) { if(isEmptyDirectory(path)) deleteImmediately.Add(path); } else { Debug.Log("Check again later for folder:" + folderTemporarilyWhitelisted); checkAgainLater.Add(folderTemporarilyWhitelisted); } } SaveTemporarilyWhitelistedFiles(checkAgainLater); Debug.Log("Folders to delete immediately:" + deleteImmediately.Join(",")); return deleteImmediately; }