public static void ZipRecursive(
string rootDirectoryPath,
DirectoryInfo currentDirectoryInfo,
ZipArchive archive,
TextWriter hashWriter,
string hashName = ConstDefaultHashName)
{
rootDirectoryPath = NormalizePath(rootDirectoryPath);
foreach (var file in currentDirectoryInfo.GetFiles())
{
var entryName = file.FullName.Substring(rootDirectoryPath.Length);
using (var reader = file.OpenRead())
{
var hash = AddToArchive(entryName, reader, archive, hashName);
hashWriter.WriteLine(HashEntryFormat, hash, entryName);
Serilog.Log.Verbose("Added {filePath} to zip archive. MD5: {md5}", file.FullName, hash);
}
}
// recurse
foreach (var directory in currentDirectoryInfo.GetDirectories())
{
ZipRecursive(rootDirectoryPath, directory, archive, hashWriter, hashName);
}
}