private static void RemoveIfEmpty(string folderName) { if (CanRemove(folderName)) { FileHelper.RemoveDirectory(folderName); } }
protected override void FixInternal() { if (!Movie.AutomaticFolderRoot.HasValue()) { throw new FixCheckException("Movie has no automatic folder root"); } if (Movie.ManualLocations.Count > 1) { throw new FixCheckException("Movie has multiple manual locations - unclear which to copy across"); } if (Movie.ManualLocations.Count == 0) { //no files to copy Movie.UseAutomaticFolders = true; Movie.UseManualLocations = false; return; } if (Movie.ManualLocations.Count == 1) { DirectoryInfo source = new DirectoryInfo(Movie.ManualLocations.First()); if (!source.Exists) { Movie.UseManualLocations = false; return; } if (!source.EnumerateFiles().Any() && !source.EnumerateDirectories().Any()) { //directory has nothing in it FileHelper.RemoveDirectory(source.FullName); Movie.UseManualLocations = false; return; } //try to copy/move files if (Movie.AutomaticLocations().Count() > 1) { throw new FixCheckException("Multiple target locations for the automated folders"); } if (!Movie.AutomaticLocations().Any()) { throw new FixCheckException("No target automatic folders can be established"); } if (source.FullName.Equals(Movie.AutomaticLocations().First(), StringComparison.CurrentCultureIgnoreCase)) { Movie.UseManualLocations = false; return; } //we have one location CopyOrMove(Movie.ManualLocations[0], Movie.AutomaticLocations().First()); Movie.UseAutomaticFolders = true; Movie.UseManualLocations = false; } }
protected override void FixInternal() { if (!Movie.AutomaticFolderRoot.HasValue()) { throw new FixCheckException("Movie has no automatic folder root"); } if (Movie.ManualLocations.Count > 1) { throw new FixCheckException("Movie has multiple manual locations - unclear which to copy across"); } if (Movie.ManualLocations.Count == 0) { //no files to copy Movie.UseAutomaticFolders = true; Movie.UseManualLocations = false; return; } if (Movie.ManualLocations.Count == 1) { DirectoryInfo source = new DirectoryInfo(Movie.ManualLocations.First()); if (!source.Exists) { Movie.UseManualLocations = false; Movie.UseAutomaticFolders = true; return; } if (!source.EnumerateFiles().Any() && !source.EnumerateDirectories().Any()) { //directory has nothing in it FileHelper.RemoveDirectory(source.FullName); Movie.UseManualLocations = false; Movie.UseAutomaticFolders = true; return; } Movie.UseAutomaticFolders = true; //try to copy/move files List <string> automaticLocations = Movie.AutomaticLocations().ToList(); if (automaticLocations.Count > 1) { throw new FixCheckException("Multiple target locations for the automated folders"); } if (!automaticLocations.Any()) { throw new FixCheckException("No target automatic folders can be established"); } if (source.FullName.Equals(automaticLocations.First(), StringComparison.CurrentCultureIgnoreCase)) { Movie.UseManualLocations = false; return; } //Do we want to copy the whole folder or just some files from witin? //we have one location to copy to bool manualLocationOnlyHasOneMovie = source.EnumerateFiles().Where(f => f.IsMovieFile()).All(file => Movie.NameMatch(file, false)); if (manualLocationOnlyHasOneMovie) { CopyOrMove(source, automaticLocations.First()); } else { MoveFiles(source.EnumerateFiles().Where(f => f.IsMovieFile()).Where(file => Movie.NameMatch(file, false)), automaticLocations.First()); } Movie.UseManualLocations = false; } }