Exemple #1
0
        public Category(Category parent, string name)
        {
            Categories = new List<Category>();

            Packages = new List<Package>();

            Name = name;

            Parent = parent;
        }
Exemple #2
0
        protected override void establish_context()
        {
            var horn = new Category(null, "orm");

            nhibernate = new Category(horn, "nhibernate");

            buildMetaData = TreeHelper.GetPackageTreeParts(new List<Dependency>());

            buildMetaData.InstallName = "nhibernate";

            buildMetaData.Version = "trunk";

            buildMetaData.ProjectInfo.Add("forum", "http://groups.google.co.uk/group/nhusers?hl=en");
        }
        public virtual void Build()
        {
            log.Info("in build.");

            var root = new Category(null, rootPackageTree);

            var parentDirectory = CreatePackageDirectory(root, dropDirectory, rootPackageTree);

            BuildCategories(rootPackageTree, root, parentDirectory);

            Categories.Add(root);

            CreateWebStructure(root);
        }
        protected void AssertCategoryIntegrity(Category category)
        {
            Assert.That(category.Name, Is.EqualTo("loggers"));

            Assert.That(category.Categories.Count, Is.EqualTo(1));

            var log4net = category.Categories[0];

            Assert.That(log4net.Packages.Count, Is.EqualTo(2));

            Assert.That(log4net.Packages[0].Name, Is.EqualTo("log4net"));

            Assert.That(log4net.Packages[0].Version, Is.EqualTo("1.2.10"));
        }
Exemple #5
0
        public Category(Category parent, IPackageTree packageTreeNode)
        {
            Categories = new List<Category>();

            Packages = new List<Package>();

            Name = packageTreeNode.Name;

            Parent = parent;

            foreach (var buildMetaData in packageTreeNode.GetAllPackageMetaData())
            {
                Packages.Add(new Package(this, buildMetaData));
            }
        }
Exemple #6
0
        public Package(Category parent, IBuildMetaData buildMetaData)
        {
            Contents = new List<PackageFile>();

            Name = parent.Name;

            Version = buildMetaData.Version;

            MetaData = new List<MetaData>();

            Parent = parent;

            foreach (var projectInfo in buildMetaData.ProjectInfo)
            {
                MetaData.Add(new MetaData(projectInfo.Key, projectInfo.Value.ToString()));
            }
        }
        protected virtual void CreateWebStructure(Category root)
        {
            log.Info("Creating web structure");

            var xml = root.ToDataContractXml<Category>();

            var hornFile = Path.Combine(Path.Combine(dropDirectory.FullName, PackageTree.RootPackageTreeName), "horn.xml");

            log.InfoFormat("Writing xml to {0}", hornFile);

            fileSystemProvider.WriteTextFile(hornFile, xml);

            var resultXml = Path.Combine(HornConfig.Settings.XmlLocation, "horn.xml");

            log.InfoFormat("Copying xml file to {0}", resultXml);

            fileSystemProvider.CopyFile(hornFile, resultXml, true);
        }
        protected virtual DirectoryInfo CreatePackageDirectory(Category category, DirectoryInfo directory, IPackageTree packageTree)
        {
            var newDirectory = new DirectoryInfo(Path.Combine(directory.FullName, category.Name));

            fileSystemProvider.CreateDirectory(newDirectory.FullName);

            if(packageTree.IsBuildNode)
            {
                foreach (var package in category.Packages)
                {
                    hasRanOnce = true;

                    try
                    {
                        BuildAndZipPackage(rootPackageTree, fileSystemProvider, package, newDirectory, dropDirectory);
                    }
                    catch (Exception ex)
                    {
                        log.Error(ex);

                        package.IsError = true;

                        package.ErrorMessage = ex.UnwrapException();

                        CreateErrorTextFile(ex, package, newDirectory);
                    }
                }
            }

            return newDirectory;
        }
        protected virtual void BuildCategories(IPackageTree packageTree, Category parent, DirectoryInfo parentDirectory)
        {
            foreach (var childTree in packageTree.Children)
            {
                if(IsExcludedName(childTree))
                    continue;

                var childCategory = new Category(parent, childTree);

                var newDirectory = CreatePackageDirectory(childCategory, parentDirectory, childTree);

                BuildCategories(childTree, childCategory, newDirectory);

                parent.Categories.Add(childCategory);
            }
        }
Exemple #10
0
        public override void before_each_spec()
        {
            var dependencyResolver = MockRepository.GenerateStub<IDependencyResolver>();
            fileSystemProvider = MockRepository.GenerateStub<IFileSystemProvider>();
            packageBuilder = MockRepository.GenerateStub<IPackageCommand>();
            rootPackageTree = MockRepository.GenerateStub<IPackageTree>();
            buildMetaData = MockRepository.GenerateStub<IBuildMetaData>();

            commandArgs = new CommandArgs("horn", false, null, false, null);

            dependencyResolver.Stub(x => x.HasComponent<ICommandArgs>()).Return(true);

            dependencyResolver.Stub(x => x.Resolve<ICommandArgs>()).Return(commandArgs);

            dependencyResolver.Stub(x => x.Resolve<IPackageCommand>("install")
                ).Return(packageBuilder);

            IoC.InitializeWith(dependencyResolver);

            rootPackageTree.Stub(x => x.Result).Return(new DirectoryInfo(@"z:\horn"));

            buildMetaData.ProjectInfo= new Dictionary<string, object>();

            rootPackageTree.Stub(x => x.GetAllPackageMetaData()).Return(new List<IBuildMetaData> {buildMetaData});

            rootPackageTree.Stub(x => x.Name).Return("horn");

            var category = new Category(null, rootPackageTree);

            fileSystemProvider.Stub(x => x.GetFiles(Arg<DirectoryInfo>.Is.TypeOf, Arg<string>.Is.TypeOf)).Return(
                new List<FileInfo>
                    {
                        new FileInfo(string.Format("horn-{0}.zip",
                                                   new DateTime(2009, 10, 30).ToString(FileSystemProvider.FileDateFormat))),
                        new FileInfo(string.Format("horn-{0}.zip",
                                                   new DateTime(2009, 10, 29).ToString(FileSystemProvider.FileDateFormat))),
                        new FileInfo(string.Format("horn-{0}.zip",
                                                   new DateTime(2009, 10, 31).ToString(FileSystemProvider.FileDateFormat)))
                    }.ToArray());

            package = new PackageDouble(category, buildMetaData);

            string zipFileName = string.Format("{0}-{1}.zip", package.Name, DateTime.Now.ToString(FileSystemProvider.FileDateFormat));

            fileSystemProvider.Stub(
                x => x.ZipFolder(Arg<DirectoryInfo>.Is.TypeOf, Arg<DirectoryInfo>.Is.TypeOf, Arg<string>.Is.TypeOf)).
                Return(new FileInfo(zipFileName));
        }
Exemple #11
0
 public PackageDouble(Category parent, IBuildMetaData buildMetaData)
     : base(parent, buildMetaData)
 {
 }