Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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);
                }
            }
        }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        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();
        }
Ejemplo n.º 6
0
        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());
        }