public void Sync(string fromDir, string toDir, params string[] patterns) { Console.WriteLine(""); Console.WriteLine("Synchronising files..."); Console.WriteLine(""); Console.WriteLine("From:"); Console.WriteLine(fromDir); Console.WriteLine("To:"); Console.WriteLine(toDir); Console.WriteLine(""); var totalSynced = 0; var totalSkipped = 0; var totalDeleted = 0; foreach (var file in Finder.FindFiles(fromDir, patterns)) { var toFile = file.Replace(fromDir, toDir); DirectoryChecker.EnsureDirectoryExists(Path.GetDirectoryName(toFile)); if (!File.Exists(toFile)) { Console.WriteLine(toFile.Replace(toDir, "")); File.Copy(file, toFile); totalSynced++; } else if (File.GetLastWriteTime(file) > File.GetLastWriteTime(toFile)) { Console.WriteLine(toFile.Replace(toDir, "")); FileBackup.Backup(toFile); File.Copy(file, toFile, true); totalSynced++; } else { Console.WriteLine("Skipping: " + toFile.Replace(toDir, "")); totalSkipped++; } } Console.WriteLine(""); Console.WriteLine("Total synced: " + totalSynced); Console.WriteLine("Total skipped: " + totalSkipped); Console.WriteLine("Total deleted: " + totalDeleted); Console.WriteLine(""); Console.WriteLine("Sync finished!"); // TODO: Add the ability to delete obsolete files }
public void Download(string url, string toFile, bool overwriteFile) { if ( !File.Exists(toFile) || overwriteFile ) { if (Path.GetFullPath(toFile) != toFile) { toFile = Path.GetFullPath(toFile); } Console.WriteLine("Downloading:"); Console.WriteLine(" " + url); Console.WriteLine("To:"); Console.WriteLine(" " + toFile); WebClient webClient = new WebClient(); webClient.Headers.Add("USER-AGENT", "csAnt"); webClient.Credentials = CredentialCache.DefaultCredentials; Console.WriteLine(" Please wait...(this may take some time)..."); DirectoryChecker.EnsureDirectoryExists(Path.GetDirectoryName(toFile)); webClient.DownloadFile( url, toFile ); OutputSize(webClient); Console.WriteLine("Download complete."); Console.WriteLine(""); } }
public void ReplaceIn(string workingDir, string[] filePatterns, string textToFind, string replacementText, bool commit) { var patterns = new List <string>(); patterns.AddRange(filePatterns); patterns.AddRange(ExcludePatterns); string[] files = Finder.FindFiles(workingDir, patterns.ToArray()); Console.WriteLine("Performing (" + (commit ? "real" : "mock") + ") replace of the following text..."); Console.WriteLine("From:"); Console.WriteLine(" " + textToFind); Console.WriteLine("To:"); Console.WriteLine(" " + replacementText); var totalChanges = 0; var totalSkipped = 0; foreach (string file in files) { if (IsSupportedFile(file)) { string content = String.Empty; try { content = OpenFile(file); } catch { Console.WriteLine("Can't load: " + file); } // Check file text if (!String.IsNullOrEmpty(content) && content.Contains(textToFind)) { Console.WriteLine("Text found in file: " + PathConverter.ToRelative(file)); if (commit) { content = content.Replace(textToFind, replacementText); SaveFile(file, content); Console.WriteLine("Text replaced. File updated."); totalChanges++; } else { totalSkipped++; } } } // Check file name if (file.Contains(textToFind)) { Console.WriteLine("Text found in file name: " + PathConverter.ToRelative(file)); if (commit) { var newFileName = file.Replace(textToFind, replacementText); DirectoryChecker.EnsureDirectoryExists(Path.GetDirectoryName(newFileName)); try { Git.Move(file, newFileName); Console.WriteLine("Renamed (git move)"); } catch { File.Move(file, newFileName); Console.WriteLine("Renamed (direct file move/rename)"); } totalChanges++; } else { totalSkipped++; } } } Console.WriteLine(""); Console.WriteLine("Total changes: " + totalChanges); Console.WriteLine("Total skipped: " + totalSkipped); Console.WriteLine(""); if (!commit) { Console.WriteLine("The replacement wasn't committed."); } Console.WriteLine(""); Console.WriteLine("Replacement complete!"); Console.WriteLine(""); }