public void Read() { DirectoryInfo dir = new DirectoryInfo(fullPath); foreach (FileInfo fileInDir in dir.GetFiles()) { files.Add(new TrackedFile(fileInDir.FullName)); } StreamReader sr = new StreamReader(dataFile, Encoding.Default); while (!sr.EndOfStream) { string[] words = sr.ReadLine().Split('|'); TrackedFile fileData = Find(words[0]); if (fileData == null) { files.Add(new TrackedFile(words[0], words[1], (long)Convert.ToDouble(words[2]), words[3], words[4])); } else { fileData.prevLength = Int32.Parse(words[2]); if (words[5] == "Inited") { fileData.mark = Mark.Inited; } else { fileData.mark = Mark.Added; } } } sr.Close(); }
public void Update() { DirectoryInfo dir = new DirectoryInfo(fullPath); foreach (FileInfo fileInDir in dir.GetFiles()) { TrackedFile fileData = Find(fileInDir.FullName); if (fileData == null) { files.Add(new TrackedFile(fileInDir.FullName)); } else { if (fileData.prevLength == -1) { fileData.prevLength = fileData.length; } if (fileData.mark == Mark.Deleted) { fileData.mark = Mark.New; } FileInfo item = new FileInfo(fileInDir.FullName); fileData.length = item.Length; fileData.creationTime = item.CreationTime.ToString(); fileData.lastWriteTime = item.LastWriteTime.ToString(); } } foreach (TrackedFile dataSet in files) { if (!File.Exists(dataSet.fullName)) { dataSet.mark = Mark.Deleted; } } }
public static void ExecuteCommand(string userInput) { switch (userInput) { case "help": Help(); return; case "status": if (ActiveDirectoryExist()) { activeDirectory.Update(); activeDirectory.Status(); } else { return; } return; case "apply": if (ActiveDirectoryExist()) { activeDirectory.Apply(); Console.WriteLine("Изменения в активной дирректории: " + activeDirectory.path + " сохранены"); } else { return; } return; case "exit": Save(); break; default: break; } int spaceIndex = userInput.IndexOf(" "); if (spaceIndex == -1) { Console.WriteLine("Введённая вами команда не корректна"); return; } string commandType = userInput.Substring(0, spaceIndex); string commandData = userInput.Substring(spaceIndex + 1, userInput.Length - spaceIndex - 1); if (commandType == String.Empty || commandData == String.Empty) { Console.WriteLine("Введённая вами команда не корректна"); return; } switch (commandType) { case "init": Init(commandData); break; case "add": if (ActiveDirectoryExist()) { activeDirectory.Update(); TrackedFile result = activeDirectory.FindAndReturn(commandData); if (result == null) { Console.WriteLine("Файла " + commandData + " не существует!"); return; } if (result.mark == Mark.Added || result.mark == Mark.Inited) { Console.WriteLine("Файл " + commandData + " уже находится под контролем"); return; } if (result.mark == Mark.Deleted) { Console.WriteLine("Файл " + commandData + " был удалён!"); return; } result.mark = Mark.Added; Console.WriteLine("Файл " + commandData + " добавлен под контроль"); } else { return; } break; case "remove": if (ActiveDirectoryExist()) { activeDirectory.Update(); TrackedFile result = activeDirectory.FindAndReturn(commandData); if (result == null) { Console.WriteLine("Файла " + commandData + " не существует!"); return; } if (result.mark == Mark.Removed || result.mark == Mark.New) { Console.WriteLine("Файл " + commandData + " не находится под контролем"); return; } if (result.mark == Mark.Deleted) { Console.WriteLine("Файл " + commandData + " был удалён!"); return; } result.mark = Mark.Removed; Console.WriteLine("Файл " + commandData + " удалён из под контроля"); } else { return; } break; case "apply": if (directories.Count == 0) { Console.WriteLine("Список отслеживаемых папок пуст"); } else { Apply(commandData); } break; case "list": if (directories.Count == 0) { Console.WriteLine("Список отслеживаемых папок пуст"); } else { if (commandData == "branch") { ListBranch(); } else { Console.WriteLine("Введённая вами команда не корректна"); } } break; case "checkout": if (directories.Count == 0) { Console.WriteLine("Список отслеживаемых папок пуст"); } else { Checkout(commandData); } break; case "checkout#": if (directories.Count == 0) { Console.WriteLine("Список отслеживаемых папок пуст"); } else { try { Checkout(Int32.Parse(commandData)); } catch { Console.WriteLine("Введённое вами число не корректно"); } } break; default: Console.WriteLine("Введённой вами команды не существует"); break; } }