示例#1
0
        public override void Process(BuildPackageArgs args)
        {
            if (this.AbortIfErrorsDetected(args))
            {
                return;
            }

            var fileName = this.GetFileName(args);

            this.Log.Debug("File name will be '" + fileName + "'", this);

            var directoryPath = this.PackageStoragePath(args);

            this.Log.Debug("File directory path will be '" + directoryPath + "'", this);

            if (!Directory.Exists(directoryPath))
            {
                this.Log.Debug("Creating directory '" + directoryPath + "'...", this);
                Directory.CreateDirectory(directoryPath);
            }

            var filePath = Path.Combine(directoryPath, fileName);

            if (File.Exists(filePath))
            {
                this.Log.Debug("File exists, deleting file '" + filePath + "'...", this);
                File.Delete(filePath);
            }

            args.PackageFilePath = filePath;
        }
示例#2
0
        protected virtual string PackageStoragePath(BuildPackageArgs args)
        {
            var storageSetting = Settings.GetSetting("Pintle.PackageStoragePath", "/packager");

            if (storageSetting.StartsWith("/"))
            {
                return(MainUtil.MapPath(storageSetting));
            }

            return(storageSetting);
        }
示例#3
0
 public BuildPackageResult(BuildPackageArgs args)
     : this()
 {
     if (args.Errors.Any())
     {
         this.Success = false;
         this.Errors  = args.Errors;
     }
     else
     {
         this.PackageFilePath = args.PackageFilePath;
         this.PackageUrl      = MainUtil.UnmapPath(args.PackageFilePath).Replace("\\", "/");
         var lastSlashIndex = args.PackageFilePath.LastIndexOf('\\');
         this.PackageFileName = args.PackageFilePath.Substring(lastSlashIndex + 1, args.PackageFilePath.Length - lastSlashIndex - 1);
         this.PackageUrl      = this.PackageUrl.Replace(this.PackageFileName.ToLower(), this.PackageFileName);
     }
 }
 public override void Process(BuildPackageArgs args)
 {
     foreach (var param in args.PackageConfiguration.Parameters)
     {
         if (!args.Parameters.ContainsKey(param.Key) && param.Value.Required)
         {
             args.Errors.Add(param.Key, $"Parameter '{param.Key}' is required but was not passed to the package builder.");
         }
         else if (args.Parameters.ContainsKey(param.Key) && param.Value.Required)
         {
             var parameter = args.Parameters[param.Key];
             if (string.IsNullOrWhiteSpace(parameter))
             {
                 args.Errors.Add(param.Key, $"Parameter '{param.Key}' is required but was not passed to the package builder.");
             }
         }
     }
 }
示例#5
0
        public override void Process(BuildPackageArgs args)
        {
            if (this.AbortIfErrorsDetected(args))
            {
                return;
            }

            args.Package.Metadata = new MetadataSource
            {
                PackageName = args.PackageConfiguration.Metadata.PackageName,
                Author      = args.PackageConfiguration.Metadata.Author,
                Version     = args.PackageConfiguration.Metadata.Version,
                Publisher   = args.PackageConfiguration.Metadata.Publisher,
                Comment     = args.PackageConfiguration.Metadata.Comment,
                License     = args.PackageConfiguration.Metadata.License,
                PackageID   = args.PackageConfiguration.Metadata.PackageId,
                Readme      = args.PackageConfiguration.Metadata.Readme,
                Revision    = args.PackageConfiguration.Metadata.Revision
            };
        }
示例#6
0
        public override void Process(BuildPackageArgs args)
        {
            if (this.AbortIfErrorsDetected(args))
            {
                return;
            }

            foreach (var itemConfig in args.PackageConfiguration.Items)
            {
                var item = Factory.GetDatabase(itemConfig.Database).Items.GetItem(itemConfig.Path);

                if (item != null)
                {
                    var logMessage = "Added item '" + itemConfig.Path + "' from '" + itemConfig.Database + "' database ";

                    if (itemConfig.IncludeChildren)
                    {
                        logMessage += "with children.";
                        args.PackageSources.Add(new ItemSource
                        {
                            SkipVersions = false,
                            Database     = item.Uri.DatabaseName,
                            Root         = item.Uri.ItemID.ToString()
                        });
                    }
                    else
                    {
                        logMessage += "no children.";
                        args.PackageItems.Entries.Add(new ItemReference(item.Uri, false).ToString());
                    }

                    this.Log.Debug(logMessage, this);
                }
                else
                {
                    this.Log.Warn("Unable to add item '" + itemConfig.Path + "' from '" + itemConfig.Database + "' database to the package. Item does not exist", null, this);
                }
            }
        }
示例#7
0
        public override void Process(BuildPackageArgs args)
        {
            if (this.AbortIfErrorsDetected(args))
            {
                return;
            }

            foreach (var fileConfig in args.PackageConfiguration.Files)
            {
                var pathMapped = MainUtil.MapPath(fileConfig.Path);

                if (!string.IsNullOrWhiteSpace(pathMapped) && File.Exists(pathMapped))
                {
                    args.PackageFiles.Entries.Add(pathMapped);
                    this.Log.Debug("Added file '" + pathMapped + "' to the package", this);
                }
                else
                {
                    this.Log.Warn("Unable to add file '" + pathMapped + "' to the package. File does not exist", null, this);
                }
            }
        }
示例#8
0
        public override void Process(BuildPackageArgs args)
        {
            if (this.AbortIfErrorsDetected(args))
            {
                return;
            }

            if (args.PackageFiles.Entries.Count > 0)
            {
                args.Package.Sources.Add(args.PackageFiles);
            }

            if (args.PackageItems.Entries.Count > 0 || args.PackageSources.Sources.Count > 0)
            {
                args.Package.Sources.Add(args.PackageSources);
            }

            args.Package.SaveProject = true;

            try
            {
                this.Log.Debug("Generating package '" + args.PackageFilePath + "'...", this);

                using (new SiteContextSwitcher(SiteContext.GetSite("shell")))
                    using (new DatabaseSwitcher(Database.GetDatabase("core")))
                        using (var writer = new PackageWriter(args.PackageFilePath))
                        {
                            var context = Sitecore.Install.Serialization.IOUtils.SerializationContext;
                            writer.Initialize(Installer.CreateInstallationContext());
                            PackageGenerator.GeneratePackage(args.Package, writer);
                        }
            }
            catch (Exception ex)
            {
                args.Errors.Add(ex.GetType().Name, ex.Message);
                this.Log.Error("Error generating package '" + args.PackageFilePath + "'", ex, this);
            }
        }
示例#9
0
 protected virtual string GetFileName(BuildPackageArgs args)
 {
     return($"{args.PackageConfiguration.Metadata.PackageName} v.{args.PackageConfiguration.Metadata.Version} {About.VersionInformation()}.zip");
 }