public int Extract(string packageFile, string directory, bool suppressNestedScriptWarning) { var filesExtracted = 0; using (var packageStream = new FileStream(packageFile, FileMode.Open, FileAccess.Read)) using (var archive = ZipArchive.Open(packageStream)) { foreach (var entry in archive.Entries) { var unescapedKey = UnescapePath(entry.Key); if (IsExcludedPath(unescapedKey)) { continue; } var targetDirectory = Path.Combine(directory, Path.GetDirectoryName(unescapedKey)); if (!Directory.Exists(targetDirectory)) { Directory.CreateDirectory(targetDirectory); } if (entry.IsDirectory || !IsPackageFile(entry.Key)) { continue; } var targetFile = Path.Combine(targetDirectory, Path.GetFileName(unescapedKey)); entry.WriteToFile(targetFile, new ExtractionOptions { Overwrite = true, WriteSymbolicLink = WriteSymbolicLink }); SetFileLastModifiedTime(entry, targetFile); filesExtracted++; if (!suppressNestedScriptWarning) { GenericPackageExtractor.WarnIfScriptInSubFolder(unescapedKey); } } return(filesExtracted); } }
void ExtractPackage(VariableDictionary variables) { if (string.IsNullOrWhiteSpace(packageFile)) { return; } if (!File.Exists(packageFile)) { throw new CommandException("Could not find package file: " + packageFile); } var extractor = new GenericPackageExtractor(); extractor.GetExtractor(packageFile).Extract(packageFile, Environment.CurrentDirectory, true); variables.Set(SpecialVariables.OriginalPackageDirectoryPath, Environment.CurrentDirectory); }
public int Extract(string packageFile, string directory, bool suppressNestedScriptWarning) { var filesExtracted = 0; using (var packageStream = new FileStream(packageFile, FileMode.Open, FileAccess.Read)) using (var reader = ZipReader.Open(packageStream)) { while (reader.MoveToNextEntry()) { var unescapedKey = UnescapePath(reader.Entry.Key); if (IsExcludedPath(unescapedKey)) { continue; } var targetDirectory = Path.Combine(directory, Path.GetDirectoryName(unescapedKey)); if (!Directory.Exists(targetDirectory)) { Directory.CreateDirectory(targetDirectory); } if (reader.Entry.IsDirectory || !IsPackageFile(reader.Entry.Key)) { continue; } var targetFile = Path.Combine(targetDirectory, Path.GetFileName(unescapedKey)); reader.WriteEntryToFile(targetFile, ExtractOptions.Overwrite); SetFileLastModifiedTime(reader.Entry, targetFile); filesExtracted++; if (!suppressNestedScriptWarning) { GenericPackageExtractor.WarnIfScriptInSubFolder(unescapedKey); } } return(filesExtracted); } }
void ExtractPackage(VariableDictionary variables) { if (string.IsNullOrWhiteSpace(packageFile)) { return; } Log.Info("Extracting package: " + packageFile); if (!File.Exists(packageFile)) { throw new CommandException("Could not find package file: " + packageFile); } var extractor = new GenericPackageExtractor(); extractor.GetExtractor(packageFile).Extract(packageFile, CrossPlatform.GetCurrentDirectory(), true); variables.Set(SpecialVariables.OriginalPackageDirectoryPath, CrossPlatform.GetCurrentDirectory()); }
static void WriteSymbolicLink(string sourcepath, string targetpath) { GenericPackageExtractor.WarnUnsupportedSymlinkExtraction(sourcepath); }
public void SetUp() { extractor = new GenericPackageExtractor(); }
public void SetUp() { extractor = new GenericPackageExtractorFactory().createStandardGenericPackageExtractor(); }