public void Compare(DirectoryInfo referenceDirectory, DirectoryInfo targetDirectory) { CompareSubdirectories(referenceDirectory, targetDirectory); CompareFiles(referenceDirectory, targetDirectory); foreach(DirectoryInfo di in referenceDirectory.EnumerateDirectories().Where( d => targetDirectory.HasSubdirectory(d) )) { Compare(di, targetDirectory.EnumerateDirectories(di.Name).Single()); } }
private void CompareSubdirectories(DirectoryInfo referenceDirectory, DirectoryInfo targetDirectory) { foreach (DirectoryInfo di in targetDirectory.EnumerateDirectories().Where(d => !referenceDirectory.HasSubdirectory(d))) { OnModification(new ModificationEventArgs(di.FullName, ModificationType.Added)); } foreach (DirectoryInfo di in referenceDirectory.EnumerateDirectories().Where(d => !targetDirectory.HasSubdirectory(d))) { OnModification(new ModificationEventArgs(di.FullName, ModificationType.Removed)); } }
public Course LoadCourse(DirectoryInfo dir) { var courseId = dir.Name; dir = dir.HasSubdirectory("Slides") ? dir.Subdirectory("Slides") : dir; var settings = CourseSettings.Load(dir); var slides = LoadSlides(dir, settings).ToArray(); CheckDuplicateSlideIds(slides); var notes = LoadInstructorNotes(dir, courseId); var title = settings.Title ?? GetTitle(dir); return new Course(courseId, title, slides, notes, settings, dir); }