internal static FileManifest Create(string rootDirPath) { List<string> dirs = FileHelper.GetDirsFromRootDir(rootDirPath); List<string> files = FileHelper.GetFilesFromDirs(dirs); List<FileManifestItem> items = CreateManifestItemsFromFiles(files, rootDirPath); foreach (FileManifestItem item in items) { item.Version = FileHelper.GetVersionsFromFile(rootDirPath + @"\" + item.File); item.Checksum = FileHelper.GetChecksumFromFile(rootDirPath + @"\" + item.File); } FileManifest manifest = new FileManifest { Items = items }; return manifest; }
internal static Dictionary<string, int> Compare(FileManifest baselineManifest, FileManifest comparisonManifest) { List<FileManifestItem> comparableItems = new List<FileManifestItem>(); foreach(FileManifestItem item in baselineManifest.Items) { if(comparisonManifest.Items.Any(i => i.File == item.File)) { comparableItems.Add(item); } } Dictionary<string, int> diffedItems = new Dictionary<string, int>(); foreach (FileManifestItem item in comparableItems) { string filename = item.File; FileManifestItem comparableItem = comparisonManifest.Items.First(i => i.File == filename); int result = item.CompareTo(comparableItem); diffedItems.Add(filename, result); } return diffedItems; }
internal static void WriteManifest(FileManifest manifest, string filePath) { string json = JsonConvert.SerializeObject(manifest, Formatting.Indented); File.WriteAllText(filePath, json); }