public string Execute([NotNull] string fileName) { var sourceFileName = LocalFile.MapPath(fileName); var targetFileName = GetTargetFileName(sourceFileName); var packageAnalyzer = new PackageAnalyzer(new SimpleProcessingContext()); var reader = new PackageReader(sourceFileName); reader.Populate(packageAnalyzer); var newItems = new List <PackageAnalyzer.PackageItem>(); var newFiles = new List <PackageAnalyzer.PackageFile>(); var package = new ZipPackageBuilder(targetFileName) { PackageName = "Anti Package for " + Path.GetFileNameWithoutExtension(sourceFileName), Readme = string.Format("Anti Package for {0}. Created {1} by {2}.", Path.GetFileNameWithoutExtension(sourceFileName), DateTime.Now.ToString(), Context.GetUserName()) }; AddItems(packageAnalyzer, package, newItems); AddFiles(packageAnalyzer, package, newFiles); AddPostStep(package, newItems, newFiles); package.Build(); return(WebUtil.GetServerUrl() + LocalFile.UnmapPath(targetFileName)); }
private void AddItems(PackageAnalyzer packageAnalyzer, ZipPackageBuilder package, List <PackageAnalyzer.PackageItem> newItems) { var items = new List <Item>(); var paths = new Dictionary <string, PackageAnalyzer.PackageItem>(); foreach (var packageItem in packageAnalyzer.Items) { var database = Factory.GetDatabase(packageItem.DatabaseName); if (database == null) { continue; } var item = database.GetItem(packageItem.ID); if (item == null) { AddNewItem(paths, packageItem); continue; } var isAdded = items.Any(i => i.ID == item.ID || i.Axes.IsAncestorOf(item)); if (!isAdded) { items.Add(item); } } newItems.AddRange(paths.Values); foreach (var item in items) { AddDescendants(package, item); } }
public string Execute([NotNull] string databaseName, [NotNull] string itemList) { Assert.ArgumentNotNull(databaseName, nameof(databaseName)); Assert.ArgumentNotNull(itemList, nameof(itemList)); var database = Factory.GetDatabase(databaseName); if (database == null) { throw new Exception("Database not found"); } var fileName = TempFolder.GetFilename("package.zip"); var items = GetItems(database, itemList); var package = new ZipPackageBuilder(fileName); foreach (var item in items) { package.Items.Add(item); } var result = package.Build(); return(WebUtil.GetServerUrl() + result); }
private int Execute([NotNull] Query query, [NotNull] QueryContext contextNode) { Debug.ArgumentNotNull(query, nameof(query)); Debug.ArgumentNotNull(contextNode, nameof(contextNode)); object o = contextNode; var from = From; if (from != null) { o = query.Evaluate(from, contextNode); if (o == null) { return(0); } } var package = new ZipPackageBuilder(FileName); var items = query.GetItems(o); foreach (var item in items) { package.Items.Add(item); } package.Build(); return(items.Count()); }
private void AddDescendants(ZipPackageBuilder package, Item item) { package.Items.Add(item); foreach (Item child in item.Children) { AddDescendants(package, child); } }
private void AddPostStep(ZipPackageBuilder package, List <PackageAnalyzer.PackageItem> newItems, List <PackageAnalyzer.PackageFile> newFiles) { if (newItems.Count == 0 && newFiles.Count == 0) { return; } package.PostStep = "Sitecore.Rocks.Server.Requests.Packages.PackagePostStep,Sitecore.Rocks.Server"; package.Comment = GetPostStepData(newItems, newFiles); }
private void AddFiles(PackageAnalyzer packageAnalyzer, ZipPackageBuilder package, List <PackageAnalyzer.PackageFile> newFiles) { foreach (var packageFile in packageAnalyzer.Files) { var file = FileUtil.MapPath(packageFile.FileName); if (File.Exists(file)) { package.Files.Add(packageFile.FileName); } else { newFiles.Add(packageFile); } } }