/// <summary> /// The main entry of the program /// </summary> /// <param name="args">The arguments</param> public static void Main(string[] args) { if (args.Length < 3) { PrintUsage(); return; } IEnumerable<string> copyDirs = GetDirectoriesToCopy(args); string srcRoot = args[0]; string destRoot = args[1]; if (copyDirs == null || !copyDirs.Any()) { throw new InvalidOperationException("There were no directories found to back up."); } string logDir = Path.Combine(Path.GetTempPath(), "backup"); string logPathWithoutExtension = Path.Combine(logDir, "backup-" + DateTime.Now.ToString("yyyyMMdd")); string log = logPathWithoutExtension + ".log"; string err = logPathWithoutExtension = ".err"; if (!Directory.Exists(logDir)) { Directory.CreateDirectory(logDir); } Copier copier = new Copier(new List<ILog>() { new ConsoleLog(), new FileLog(log, err) }); foreach (string dir in copyDirs) { string src = Path.Combine(srcRoot, dir); string dest = Path.Combine(destRoot, dir); copier.UpdateDirectory(src, dest); } }
public void UpdateDirectorySubdirectories() { string dir1 = Path.Combine(Path.GetTempPath(), "dir1"); string subdir1 = Path.Combine(dir1, "subpath"); string dir2 = Path.Combine(Path.GetTempPath(), "dir2"); string subdir2 = Path.Combine(dir2, "subpath"); string file1 = Path.Combine(subdir1, "file"); string file2 = Path.Combine(subdir2, "file"); Directory.CreateDirectory(dir1); Directory.CreateDirectory(subdir1); File.WriteAllText(file1, "contents"); Copier copier = new Copier(new MemoryLog()); try { copier.UpdateDirectory(dir1, dir2); Directory.Exists(dir2).Should().BeTrue(); Directory.Exists(subdir2).Should().BeTrue(); File.Exists(file2).Should().BeTrue(); } finally { File.Delete(file1); Directory.Delete(subdir1); Directory.Delete(dir1); File.Delete(file2); Directory.Delete(subdir2); Directory.Delete(dir2); } }
public void UpdateDirectorySourceDoesNotExist() { string dir1 = Path.Combine(Path.GetTempPath(), "dir1"); string dir2 = Path.Combine(Path.GetTempPath(), "dir2"); Action action = () => { Copier copier = new Copier(new MemoryLog()); copier.UpdateDirectory(dir1, dir2); }; action.ShouldThrow<DirectoryNotFoundException>(); }