private BuildTree CalculateDependencies(IPackageTree packageTree, BuildTree currentTree) { if (currentTree == null) { currentTree = new BuildTree(packageTree); } else { if (HasACircularDependency(currentTree, packageTree)) { throw new CircularDependencyException(packageTree.Name); } InsertDependenciesBeforeParent(currentTree, packageTree); } var buildMetaData = packageTree.GetBuildMetaData(packageTree.Name); var buildEngine = buildMetaData.BuildEngine; var dependencies = buildEngine.Dependencies; foreach (var dependency in dependencies) { var package = packageTree.RetrievePackage(dependency); if (package is NullPackageTree) throw new UnknownInstallPackageException(string.Format("No package definition exists for dependent package {0}, which is required by {1}.", dependency.PackageName, packageTree.FullName)); CalculateDependencies(package, currentTree); } return currentTree; }
private BuildTree CalculateDependencies(IPackageTree packageTree, BuildTree currentTree) { if (currentTree == null) { currentTree = new BuildTree(packageTree); } else { if (HasACircularDependency(currentTree, packageTree)) { throw new CircularDependencyException(packageTree.Name); } InsertDependenciesBeforeParent(currentTree, packageTree); } var buildMetaData = packageTree.GetBuildMetaData(packageTree.Name); var buildEngine = buildMetaData.BuildEngine; var dependencies = buildEngine.Dependencies; foreach (var dependency in dependencies) { var package = packageTree.RetrievePackage(dependency); if (package is NullPackageTree) { throw new UnknownInstallPackageException(string.Format("No package definition exists for dependent package {0}, which is required by {1}.", dependency.PackageName, packageTree.FullName)); } CalculateDependencies(package, currentTree); } return(currentTree); }
protected virtual IBuildMetaData GetBuildMetaData(IPackageTree nextTree) { return nextTree.GetBuildMetaData(nextTree.BuildFile); }
protected virtual IBuildMetaData GetBuildMetaData(IPackageTree nextTree) { return(nextTree.GetBuildMetaData(nextTree.BuildFile)); }