public Tuple <SemanticVersion, string> GetNuGetPackage(AssemblyCacheService _service, Tuple <Version, string> name) { Configuration configuration = null; ConfigurationGetter configurationGetter = new ConfigurationGetter(new ConfigurationFileReader()); //Try to see if some manual mapping is set on the dll directory var result = _service.Assemblies.Union(_service.IgnoredAssemblies); var groups = result.GroupBy(_ => _.Key.Item2); var assemblyVersions = groups.FirstOrDefault(_ => _.Key == name.Item2); if (assemblyVersions != null) { var sortedAssemblyVersions = assemblyVersions.Where(_ => _.Key.Item1.Version.Equals(name.Item1)).ToList(); //No exact matching, let's find in a larger way if (!sortedAssemblyVersions.Any()) { sortedAssemblyVersions = assemblyVersions.Where(_ => _.Key.Item1.Version >= name.Item1).ToList(); } //No exact matching, let's find in an even larger way if (!sortedAssemblyVersions.Any()) { sortedAssemblyVersions = assemblyVersions.Where(_ => _.Key.Item1.Version.Major >= name.Item1.Major).ToList(); } sortedAssemblyVersions.Sort((pair, valuePair) => pair.Key.Item1.CompareTo(valuePair.Key.Item1)); configuration = sortedAssemblyVersions.Aggregate(new Configuration(), (tmpConfiguration, pairs) => configurationGetter.Merge(tmpConfiguration, configurationGetter.Get(pairs.Value.Path))); } //Unable to find a dll name close to the package name, let's try to find in root .ini else { configuration = configurationGetter.Get(_rootPath); } var nugetPackage = configuration.NugetPackagesMapping.FirstOrDefault(_ => _.Item2.Regex.Match(name.Item2 + NuGetPackageCreationService.NugetSeparator + name.Item1).Success); if (nugetPackage != null) { Trace.TraceInformation($"Manual configuration ask to used {nugetPackage.Item1} instead of {name.Item2}"); return(new Tuple <SemanticVersion, string>(nugetPackage.Item2.SemanticVersion ?? new SemanticVersion(name.Item1), nugetPackage.Item1)); } //Try to see if it exist on nuget official repository var nuGetPackage = GetOfficialNuGetPackage(name); if (nuGetPackage != null) { return(nuGetPackage); } Trace.TraceInformation($"No mapping information for {name.Item2}"); return(null); }
public Configuration Get() { return(_configurationGetter.Get(_path)); }