Example #1
0
        //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(","));
        }
Example #2
0
        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;
        }