public void ThenTheContentOfTheInMemoryZipIs(string path, string content) { ZipExtensions.Unzip(_zipped, (p, ba) => { Assert.That(p.ToString().Replace('/', '\\'), Is.EqualTo(path)); Assert.That(Encoding.Default.GetString(ba), Is.EqualTo(content)); }); }
public byte[] ExtractDefaultTranslation(string sitePath) { var site = Path.Get(sitePath); var corePoPath = site.Combine( "Core", "App_Data", "Localization", "en-US", "orchard.core.po"); var rootPoPath = site.Combine( "App_Data", "Localization", "en-US", "orchard.root.po"); var zipFiles = new Dictionary <Path, StringBuilder>(); // Extract resources for module manifests site.Files("module.txt", true) .Read((content, path) => { var moduleName = path.Parent().FileName; var poPath = path.MakeRelativeTo(sitePath).Tokens[0].Equals("core", StringComparison.OrdinalIgnoreCase) ? corePoPath : GetModuleLocalizationPath(site, moduleName); ExtractPoFromManifest(zipFiles, poPath, content, path, site); }); // Extract resources for theme manifests site.Files("theme.txt", true) .Read((content, path) => { var themeName = path.Parent().FileName; var poPath = GetThemeLocalizationPath(site, themeName); ExtractPoFromManifest(zipFiles, poPath, content, path, site); }); // Extract resources from views and cs files, for the web site // as well as for the framework and Azure projects. site.Add(site.Parent().Combine("Orchard")) .Add(site.Parent().Combine("Orchard.Azure")) .ForEach(p => p.Files("*", true) .WhereExtensionIs(".cshtml", ".aspx", ".ascx", ".cs") .Grep( ResourceStringExpression, (path, match, contents) => { var str = match.Groups[1].ToString(); DispatchResourceString(zipFiles, corePoPath, rootPoPath, site, path, p, contents, str); } ) .Grep( PluralStringExpression, (path, match, contents) => { var str = match.Groups[1].ToString(); DispatchResourceString(zipFiles, corePoPath, rootPoPath, site, path, p, contents, str); str = match.Groups[6].ToString(); DispatchResourceString(zipFiles, corePoPath, rootPoPath, site, path, p, contents, str); } )); return(ZipExtensions.Zip( new Path(zipFiles.Keys.Select(p => p.MakeRelativeTo(site))), p => Encoding.UTF8.GetBytes(zipFiles[site.Combine(p)].ToString()))); }
public byte[] PackageTranslations(string cultureCode, string sitePath) { var site = Path.Get(sitePath); var translationFiles = site .Files("orchard.*.po", true) .Where(p => p.Parent().FileName.Equals(cultureCode, StringComparison.OrdinalIgnoreCase)) .MakeRelativeTo(site); return(ZipExtensions.Zip( translationFiles, p => site.Combine(p).ReadBytes())); }
public byte[] ExtractDefaultTranslation(string sitePath, IEnumerable <string> extensionNames) { if (extensionNames == null || extensionNames.Count() == 0) { return(ExtractDefaultTranslation(sitePath)); } var site = Path.Get(sitePath); var zipFiles = new Dictionary <Path, StringBuilder>(); // Extract resources for module manifests site.Files("module.txt", true) .Where(p => extensionNames.Contains(p.Parent().FileName)) .Read((content, path) => { var moduleName = path.Parent().FileName; var poPath = GetModuleLocalizationPath(site, moduleName); ExtractPoFromManifest(zipFiles, poPath, content, path, site); }); // Extract resources for theme manifests site.Files("theme.txt", true) .Where(p => extensionNames.Contains(p.Parent().FileName)) .Read((content, path) => { var themeName = path.Parent().FileName; var poPath = GetThemeLocalizationPath(site, themeName); ExtractPoFromManifest(zipFiles, poPath, content, path, site); }); // Extract resources from views and cs files site.Files("*", true) .WhereExtensionIs(".cshtml", ".aspx", ".ascx", ".cs") .Where(p => { var tokens = p.MakeRelativeTo(site).Tokens; return(new[] { "themes", "modules" }.Contains(tokens[0]) && extensionNames.Contains(tokens[1])); }) .Grep( ResourceStringExpression, (path, match, contents) => { var str = match.Groups[1].ToString(); DispatchResourceString(zipFiles, null, null, site, path, site, contents, str); } ) .Grep( PluralStringExpression, (path, match, contents) => { var str = match.Groups[1].ToString(); DispatchResourceString(zipFiles, null, null, site, path, site, contents, str); str = match.Groups[6].ToString(); DispatchResourceString(zipFiles, null, null, site, path, site, contents, str); } ); return(ZipExtensions.Zip( new Path(zipFiles.Keys.Select(p => p.MakeRelativeTo(site))), p => Encoding.UTF8.GetBytes(zipFiles[site.Combine(p)].ToString()))); }
public byte[] PackageTranslations(string cultureCode, string sitePath, IEnumerable <string> extensionNames) { var site = Path.Get(sitePath); var translationFiles = site .Files("orchard.*.po", true) .Where(p => p.Parent().FileName.Equals(cultureCode, StringComparison.OrdinalIgnoreCase) && (extensionNames.Contains(p.MakeRelativeTo(site.Combine("Modules")).Tokens[0]) || extensionNames.Contains(p.MakeRelativeTo(site.Combine("Themes")).Tokens[0]))) .MakeRelativeTo(site); return(ZipExtensions.Zip( translationFiles, p => site.Combine(p).ReadBytes())); }
public void InstallTranslation(byte[] zippedTranslation, string sitePath) { var siteRoot = Path.Get(sitePath); ZipExtensions.Unzip(zippedTranslation, (path, contents) => { if (path.Extension == ".po") { var tokens = path.Tokens; var destPath = siteRoot.Combine(tokens); // If a translation file is for a module or a theme, only install it // if said module or theme exists already. Otherwise, skip. if ((!tokens[0].Equals("modules", StringComparison.OrdinalIgnoreCase) && !tokens[0].Equals("themes", StringComparison.OrdinalIgnoreCase)) || siteRoot.Combine(tokens[0], tokens[1]).IsDirectory) { destPath.Write(contents); } } }); }
public byte[] ExtractDefaultTranslation(string sitePath, IEnumerable <string> extensionNames) { if (extensionNames == null || !extensionNames.Any()) { return(ExtractDefaultTranslation(sitePath)); } var site = Path.Get(sitePath); var zipFiles = new Dictionary <Path, StringEntryBuilder>(); // Extract resources for module manifests site.Files("module.txt", true) .Where(p => extensionNames.Contains(p.Parent().FileName, StringComparer.OrdinalIgnoreCase)) .Read((content, path) => { var moduleName = path.Parent().FileName; var poPath = GetModuleLocalizationPath(site, moduleName); ExtractPoFromManifest(zipFiles, poPath, content, path, site); }); // Extract resources for theme manifests site.Files("theme.txt", true) .Where(p => extensionNames.Contains(p.Parent().FileName, StringComparer.OrdinalIgnoreCase)) .Read((content, path) => { var themeName = path.Parent().FileName; var poPath = GetThemeLocalizationPath(site, themeName); ExtractPoFromManifest(zipFiles, poPath, content, path, site); }); // Extract resources from views and cs files site.Files("*", true) .WhereExtensionIs(".cshtml", ".aspx", ".ascx", ".cs") .Where(p => { var tokens = p.MakeRelativeTo(site).Tokens; return(new[] { "themes", "modules" }.Contains(tokens[0], StringComparer.OrdinalIgnoreCase) && extensionNames.Contains(tokens[1], StringComparer.OrdinalIgnoreCase)); }) .Read((contents, path) => ExtractResourcesFromCode(contents, null, null, site, path, zipFiles)); return(ZipExtensions.Zip( new Path(zipFiles.Keys.Select(p => p.MakeRelativeTo(site))), p => Encoding.UTF8.GetBytes(zipFiles[site.Combine(p)].ToString()))); }
public void ZipDir_SimpleFilter_2() { // Arrange string testDir = TestUtils.CreateTestDirectory(this.TestContext); TestUtils.CreateTextFile("dummy.txt", testDir, "dummy content"); TestUtils.CreateTextFile("sub1\\foo.txt", testDir, "dummy content"); TestUtils.CreateTextFile("sub2\\bar.123", testDir, "dummy content"); TestUtils.CreateTextFile("sub2\\archive1.zip", testDir, "dummy content"); TestUtils.CreateTextFile("archive2.zip", testDir, "dummy content"); Func <string, bool> shouldInclude = f => f.Contains("sub"); string fullzipFileName = Path.Combine(testDir, "output.zip"); ZipExtensions.CreateFromDirectory(testDir, fullzipFileName, shouldInclude); ZipFileChecker checker = new ZipFileChecker(this.TestContext, fullzipFileName); checker.AssertZipContainsOnlyExpectedFiles( "sub1\\foo.txt", "sub2\\bar.123", "sub2\\archive1.zip"); }
public void WhenIZipInMemory(string content, string path) { _zipped = ZipExtensions.Zip( new Path(path), p => Encoding.Default.GetBytes(content)); }
public void to(string destination) { _that._zipped = ZipExtensions.Zip( _that._path.CombineWithWindowsPath(destination), p => Encoding.Default.GetBytes(_content)); }