public static IReadOnlyList <string> Delete(DeleteConfiguration config) { switch (config.FolderDeleteOption) { case FolderDeleteOption.DeleteEmptiedFolders: return(DeleteFilesAndDeleteEmptiedFolders(config)); case FolderDeleteOption.DeleteAllEmptyFolders: return(DeleteFilesAndDeleteAllEmptyFolders(config)); case FolderDeleteOption.NoDeleteEmptyFolders: return(OnlyDeleteFiles(config)); default: throw new ArgumentOutOfRangeException(nameof(config.FolderDeleteOption)); } }
public static FolderCollection GetOldFiles(DeleteConfiguration config) { var allFiles = Directory.GetFileSystemEntries(config.Folder, "*.*", SearchOption.AllDirectories); var oldFiles = allFiles.Where(f => config.IsFileOld(f)) .Select(f => new OldFile(f, config.FileDeleter)) .ToList(); var foldersWithOldFiles = oldFiles.GroupBy(f => f.FilePath) .Select(fg => new FolderWithFiles(fg.Key, fg.ToList(), config.FolderDeleter)) .ToList(); var allSubFolders = Directory.EnumerateDirectories(config.Folder, "*", SearchOption.AllDirectories) .Select(f => new SubFolder(f, config.FolderDeleter)) .ToList(); return(new FolderCollection(foldersWithOldFiles, allSubFolders)); }
private static IReadOnlyList <string> OnlyDeleteFiles(DeleteConfiguration config) => FileSystem.GetOldFiles(config) .DeleteOldFiles() .GetErrors();
private static IReadOnlyList <string> DeleteFilesAndDeleteAllEmptyFolders(DeleteConfiguration config) => FileSystem.GetOldFiles(config) .DeleteOldFiles() .DeleteAllEmptyFolders() .GetErrors();