public static void AddFilesToZip(this ICakeContext context, FilePath zipFile, DirectoryPath start, string newStart, FilePathCollection files, bool append) { zipFile = context.MakeAbsolute(zipFile); if (!append) { if (context.FileExists(zipFile)) { context.DeleteFile(zipFile); } } if (newStart != "") { newStart = newStart.EnsureEndsWith("/"); } var rootPath = context.MakeAbsolute(start).FullPath; foreach (var file in files) { context.Information("Reading " + file.FullPath); using (var fileToZip = new FileStream(file.FullPath, FileMode.Open, FileAccess.Read)) { var pathInZip = newStart == "" ? file.FullPath.Substring(rootPath.Length + 1) : newStart + file.FullPath.Substring(rootPath.Length + 1); context.AddStreamToZip(zipFile, fileToZip, pathInZip, true); } } }
public static void AddTextFileToZip(this ICakeContext context, FilePath zipFile, string content, string name, bool append) { using (var sr = context.GenerateStreamFromString(content)) { context.AddStreamToZip(zipFile, sr, name, append); } }
public static void AddBinaryFileToZip(this ICakeContext context, FilePath zipFile, byte[] content, string name, bool append) { using (var sr = new MemoryStream(content)) { context.AddStreamToZip(zipFile, sr, name, append); } }
public static void AddXmlFileToZip(this ICakeContext context, FilePath zipFile, XmlDocument content, string name, bool append) { using (var ms = new MemoryStream()) { var writer = new XmlTextWriter(ms, System.Text.Encoding.UTF8); writer.Formatting = Formatting.Indented; content.WriteContentTo(writer); writer.Flush(); ms.Flush(); ms.Position = 0; context.AddStreamToZip(zipFile, ms, name, append); } }
public static void AddStreamToZip(this ICakeContext context, FilePath zipFile, Stream fileToZip, string name) { context.AddStreamToZip(zipFile, fileToZip, name, false); }