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 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 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); } } }
private void WritePackage(XmlTextWriter output, string fileName) { var packageAnalyzer = new PackageAnalyzer(new SimpleProcessingContext()); var reader = new PackageReader(fileName); reader.Populate(packageAnalyzer); output.WriteStartElement("package"); output.WriteElementString("filename", fileName); output.WriteElementString("name", packageAnalyzer.Name); output.WriteElementString("author", packageAnalyzer.Author); output.WriteElementString("version", packageAnalyzer.Version); output.WriteElementString("publisher", packageAnalyzer.Publisher); output.WriteElementString("license", packageAnalyzer.License); output.WriteElementString("comment", packageAnalyzer.Comment); output.WriteElementString("readme", packageAnalyzer.Readme); output.WriteEndElement(); }
private void WritePackage(XmlTextWriter output, string fileName) { var folder = FileUtil.MapPath(Settings.PackagePath); var localFileName = "package:" + fileName.Mid(folder.Length + 1).Replace("\\", "/"); var packageAnalyzer = new PackageAnalyzer(new SimpleProcessingContext()); var reader = new PackageReader(fileName); reader.Populate(packageAnalyzer); output.WriteStartElement("package"); output.WriteElementString("filename", localFileName); output.WriteElementString("name", packageAnalyzer.Name); output.WriteElementString("author", packageAnalyzer.Author); output.WriteElementString("version", packageAnalyzer.Version); output.WriteElementString("publisher", packageAnalyzer.Publisher); output.WriteElementString("license", packageAnalyzer.License); output.WriteElementString("comment", packageAnalyzer.Comment); output.WriteElementString("readme", packageAnalyzer.Readme); output.WriteEndElement(); }
public string Execute([NotNull] string fileName) { var localFileName = LocalFile.MapPath(fileName); var packageAnalyzer = new PackageAnalyzer(new SimpleProcessingContext()); var reader = new PackageReader(localFileName); reader.Populate(packageAnalyzer); var writer = new StringWriter(); var output = new XmlTextWriter(writer) { Formatting = Formatting.Indented }; output.WriteStartElement("package"); output.WriteAttributeString("poststep", packageAnalyzer.PostStep); var items = new List <string>(); foreach (var packageItem in packageAnalyzer.Items) { var itemKey = packageItem.DatabaseName + packageItem.ID; if (items.Contains(itemKey)) { continue; } items.Add(itemKey); var database = Factory.GetDatabase(packageItem.DatabaseName); if (database == null) { WritePackageItem(output, packageItem, "Skip: Database not found"); continue; } var item = database.GetItem(packageItem.ID); if (item == null) { WritePackageItem(output, packageItem, "Add"); continue; } WritePackageItem(output, packageItem, "Overwrite"); } foreach (var packageFile in packageAnalyzer.Files) { var file = FileUtil.MapPath(packageFile.FileName); if (File.Exists(file)) { WritePackageFile(output, packageFile, "Overwrite"); } else { WritePackageFile(output, packageFile, "Add"); } } output.WriteEndElement(); return(writer.ToString()); }