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);
        }