public static bool GetFiles(string[] args) { //Get Arguments if (args != null) { foreach (string s in args) { if (String.IsNullOrEmpty(LeftSide)) { LeftSide = s; } else if (String.IsNullOrEmpty(RightSide)) { RightSide = s; } else { break; } } } //If I did not pass files in arguments then ask user for files if (String.IsNullOrEmpty(LeftSide) || String.IsNullOrEmpty(RightSide)) { Console.WriteLine("Drag and Drop Path to File 1 (then press enter):\n"); LeftSide = Console.ReadLine(); Console.WriteLine("\nDrag and Drop Path to File 2 (then press enter):\n"); RightSide = Console.ReadLine(); } //Check if I have 2 valid files to compare if (!FileValidator.ValidFile(LeftSide)) { CLIComparer.InvalidFile(LeftSide); return(false); } if (!FileValidator.ValidFile(RightSide)) { CLIComparer.InvalidFile(RightSide); return(false); } return(true); }
static void Main(string[] args) { CLIComparer.ShowHeader(); for (int i = 0; i < 5; i++) { if (CLIComparer.GetFiles(args)) { break; } //After tries we exit if (i == 4) { return; } } CLIComparer.CompareFiles(); }
public static void CompareFiles() { CLIComparer.Init(); //If I am here I have valid files, start comparing CompareEngine.CompareEngine compareEngine = new CompareEngine.CompareEngine(); //Load the file paths into objects CompareText sourceDiffList = new CompareText(LeftSide); CompareText destinationDiffList = new CompareText(RightSide); //Perform the comparison compareEngine.StartDiff(sourceDiffList, destinationDiffList); //Get Results ArrayList resultLines = compareEngine.DiffResult(); string numberMask = GetNumberMask(sourceDiffList.Count(), destinationDiffList.Count()); int lineCounter = 1; foreach (CompareResultSpan compareResultSpan in resultLines) { switch (compareResultSpan.Status) { case CompareResultSpanStatus.DeleteSource: for (int i = 0; i < compareResultSpan.Length; i++) { string initial = ""; string rewrite = ""; initial += lineCounter.ToString(numberMask); rewrite += lineCounter.ToString(numberMask); initial += " < " + sourceDiffList.GetByIndex(compareResultSpan.SourceIndex + i).Line + ""; CLIComparer.DiffLines.Add(initial); lineCounter++; CLIComparer.MissingSourceCounter++; } break; case CompareResultSpanStatus.NoChange: for (int i = 0; i < compareResultSpan.Length; i++) { lineCounter++; } break; case CompareResultSpanStatus.AddDestination: for (int i = 0; i < compareResultSpan.Length; i++) { string rewrite = ""; rewrite += lineCounter.ToString(numberMask); rewrite += " > " + destinationDiffList.GetByIndex(compareResultSpan.DestinationIndex + i).Line + ""; CLIComparer.DiffLines.Add(rewrite); lineCounter++; CLIComparer.MissingDestCounter++; } break; case CompareResultSpanStatus.Replace: for (int i = 0; i < compareResultSpan.Length; i++) { string initial = ""; string rewrite = ""; initial += lineCounter.ToString(numberMask); rewrite += lineCounter.ToString(numberMask); initial += " initial:"; rewrite += " rewrite:"; initial += sourceDiffList.GetByIndex(compareResultSpan.SourceIndex + i).Line; rewrite += destinationDiffList.GetByIndex(compareResultSpan.DestinationIndex + i).Line; CLIComparer.DiffLines.Add(initial); CLIComparer.DiffLines.Add(rewrite); lineCounter++; CLIComparer.DiffsCounter++; } break; } } CLIComparer.ShowSummary(); }