public Category(Category parent, string name) { Categories = new List<Category>(); Packages = new List<Package>(); Name = name; Parent = parent; }
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")); }
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)); } }
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); } }
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)); }
public PackageDouble(Category parent, IBuildMetaData buildMetaData) : base(parent, buildMetaData) { }