コード例 #1
0
ファイル: DockerData.cs プロジェクト: devjoes/WhaleFactory
        private ImmutableArray <DockerProjectData> getCommonDeps()
        {
            var allProjectsBuilt = this.tests.Value.Prepend(this.mainProject.Value).ToArray();
            Dictionary <Guid, int> commonDepCounts = new Dictionary <Guid, int>();

            foreach (var p in allProjectsBuilt) // Dont use the public prop or we will trigger filterCommonDeps
            {
                foreach (var dep in p.Dependencies.All)
                {
                    if (!commonDepCounts.ContainsKey(dep.Id))
                    {
                        commonDepCounts.Add(dep.Id, 0);
                    }
                    commonDepCounts[dep.Id]++;
                }
            }

            var commonIds = commonDepCounts.Keys
                            .Where(id => commonDepCounts[id] / (float)allProjectsBuilt.Length >= this.CommonDepsThreshold).ToHashSet();

            var common = allProjectsBuilt
                         .SelectMany(p => p.Dependencies.All)
                         .GroupBy(g => g.Id)
                         .Select(g => g.First())
                         .Where(d => commonIds.Contains(d.Id));

            return(common.OrderBy(d => DependencyOrdering.GetOrderedProjectIndex(d.Id)).ToImmutableArray());
        }
コード例 #2
0
 private IFeatureInfo[] Order(IEnumerable <IFeatureInfo> featuresToOrder)
 {
     stackVariable0 = featuresToOrder;
     stackVariable1 = ExtensionManager.u003cu003ec.u003cu003e9__35_0;
     if (stackVariable1 == null)
     {
         dummyVar0      = stackVariable1;
         stackVariable1 = new Func <IFeatureInfo, string>(ExtensionManager.u003cu003ec.u003cu003e9.u003cOrderu003eb__35_0);
         ExtensionManager.u003cu003ec.u003cu003e9__35_0 = stackVariable1;
     }
     return(DependencyOrdering.OrderByDependenciesAndPriorities <IFeatureInfo>(stackVariable0.OrderBy <IFeatureInfo, string>(stackVariable1), new Func <IFeatureInfo, IFeatureInfo, bool>(this.HasDependency), new Func <IFeatureInfo, int>(this.GetPriority)).ToArray <IFeatureInfo>());
 }
コード例 #3
0
        public IEnumerable <IPackageConfiguration> GetPackageConfigurations(DependencyOrdering dependencyOrdering)
        {
            if (dependencyOrdering == DependencyOrdering.TopPackagesOnly)
            {
                var dependencies = new List <string>();
                foreach (var info in ProductPackagesInfo)
                {
                    dependencies.AddRange(info.Value.Dependencies);
                }

                return(Packages.Where(x => !dependencies.Contains(x.Id.ToString())));
            }

            if (dependencyOrdering == DependencyOrdering.TopToBottom)
            {
                var packages = new List <IPackageConfiguration>(Packages);
                packages.Reverse();
                return(packages);
            }

            return(Packages);
        }