Пример #1
0
 public async Task<IEnumerable<LibraryDependency>> GetDependencies(WalkProviderMatch match, FrameworkName targetFramework)
 {
     using (var stream = await _source.OpenNuspecStreamAsync(new PackageInfo
     {
         Id = match.Library.Name,
         Version = match.Library.Version,
         ContentUri = match.Path
     }))
     {
         var metadata = (IPackageMetadata)Manifest.ReadFrom(stream, validateSchema: false).Metadata;
         IEnumerable<PackageDependencySet> dependencySet;
         if (VersionUtility.GetNearest(targetFramework, metadata.DependencySets, out dependencySet))
         {
             return dependencySet
                 .SelectMany(ds => ds.Dependencies)
                 .Select(d => new LibraryDependency
                 {
                     LibraryRange = new LibraryRange(d.Id, frameworkReference: false)
                     {
                         VersionRange = d.VersionSpec == null ? null : new SemanticVersionRange(d.VersionSpec)
                     }
                 })
                 .ToList();
         }
     }
     return Enumerable.Empty<LibraryDependency>();
 }
Пример #2
0
 public async Task <IEnumerable <LibraryDependency> > GetDependencies(WalkProviderMatch match, FrameworkName targetFramework)
 {
     using (var stream = await _source.OpenNuspecStreamAsync(new PackageInfo
     {
         Id = match.Library.Name,
         Version = match.Library.Version,
         ContentUri = match.Path
     }))
     {
         var metadata = (IPackageMetadata)Manifest.ReadFrom(stream, validateSchema: false).Metadata;
         IEnumerable <PackageDependencySet> dependencySet;
         if (VersionUtility.GetNearest(targetFramework, metadata.DependencySets, out dependencySet))
         {
             return(dependencySet
                    .SelectMany(ds => ds.Dependencies)
                    .Select(d => new LibraryDependency
             {
                 LibraryRange = new LibraryRange(d.Id, frameworkReference: false)
                 {
                     VersionRange = d.VersionSpec == null ? null : new SemanticVersionRange(d.VersionSpec)
                 }
             })
                    .ToList());
         }
     }
     return(Enumerable.Empty <LibraryDependency>());
 }
Пример #3
0
 public Task <RuntimeFile> GetRuntimes(WalkProviderMatch match, FrameworkName targetFramework)
 {
     if (match.Library.Name.Equals(ImplicitRuntimePackageId) && match.Library.Version.Equals(ImplicitRuntimePackageVersion))
     {
         return(Task.FromResult(ImplicitRuntimeFile));
     }
     return(Task.FromResult <RuntimeFile>(null));
 }
Пример #4
0
 public async Task CopyToAsync(WalkProviderMatch match, Stream stream)
 {
     using (var nupkgStream = await _source.OpenNupkgStreamAsync(new PackageInfo
     {
         Id = match.Library.Name,
         Version = match.Library.Version,
         ContentUri = match.Path
     }))
     {
         await nupkgStream.CopyToAsync(stream);
     }
 }
Пример #5
0
        private static async Task <WalkProviderMatch> FindLibrary(
            LibraryRange libraryRange,
            IEnumerable <IWalkProvider> providers,
            Func <IWalkProvider, Task <WalkProviderMatch> > action)
        {
            var tasks = new List <Task <WalkProviderMatch> >();

            foreach (var provider in providers)
            {
                tasks.Add(action(provider));
            }

            WalkProviderMatch bestMatch = null;
            var matches = new List <WalkProviderMatch>();

            // Short circuit if we find an exact match
            while (tasks.Any())
            {
                var task = await Task.WhenAny(tasks);

                tasks.Remove(task);
                var match = await task;

                // If we found an exact match then use it
                if (libraryRange.VersionRange.VersionFloatBehavior == SemanticVersionFloatBehavior.None &&
                    match != null &&
                    match.Library.Version.Equals(libraryRange.VersionRange.MinVersion))
                {
                    return(match);
                }

                matches.Add(match);
            }

            foreach (var match in matches)
            {
                if (VersionUtility.ShouldUseConsidering(
                        current: bestMatch?.Library?.Version,
                        considering: match?.Library?.Version,
                        ideal: libraryRange.VersionRange))
                {
                    bestMatch = match;
                }
            }

            return(bestMatch);
        }
Пример #6
0
        public Task <RuntimeFile> GetRuntimes(WalkProviderMatch match, FrameworkName targetFramework)
        {
            foreach (var path in _dependencyProvider.GetAttemptedPaths(targetFramework))
            {
                var runtimeJsonPath = path
                                      .Replace("{name}.nuspec", "runtime.json")
                                      .Replace("project.json", "runtime.json")
                                      .Replace("{name}", match.Library.Name)
                                      .Replace("{version}", match.Library.Version.ToString());

                if (File.Exists(runtimeJsonPath))
                {
                    var formatter = new RuntimeFileFormatter();
                    return(Task.FromResult(formatter.ReadRuntimeFile(runtimeJsonPath)));
                }
            }
            return(Task.FromResult <RuntimeFile>(null));
        }
Пример #7
0
        public Task<RuntimeFile> GetRuntimes(WalkProviderMatch match, FrameworkName targetFramework)
        {
            foreach(var path in _dependencyProvider.GetAttemptedPaths(targetFramework))
            {
                var runtimeJsonPath = path
                    .Replace("{name}.nuspec", "runtime.json")
                    .Replace("project.json", "runtime.json")
                    .Replace("{name}", match.Library.Name)
                    .Replace("{version}", match.Library.Version.ToString());

                if (File.Exists(runtimeJsonPath))
                {
                    var formatter = new RuntimeFileFormatter();
                    return Task.FromResult(formatter.ReadRuntimeFile(runtimeJsonPath));
                }
            }
            return Task.FromResult<RuntimeFile>(null);
        }
Пример #8
0
 public async Task <RuntimeFile> GetRuntimes(WalkProviderMatch match, FrameworkName targetFramework)
 {
     using (var stream = await _source.OpenRuntimeStreamAsync(new PackageInfo
     {
         Id = match.Library.Name,
         Version = match.Library.Version,
         ContentUri = match.Path
     }))
     {
         if (stream != null)
         {
             var formatter = new RuntimeFileFormatter();
             using (var reader = new StreamReader(stream))
             {
                 return(formatter.ReadRuntimeFile(reader));
             }
         }
     }
     return(null);
 }
Пример #9
0
 public async Task CopyToAsync(WalkProviderMatch match, Stream stream)
 {
     using (var nupkgStream = await _source.OpenNupkgStreamAsync(new PackageInfo
     {
         Id = match.Library.Name,
         Version = match.Library.Version,
         ContentUri = match.Path
     }))
     {
         await nupkgStream.CopyToAsync(stream);
     }
 }
Пример #10
0
        public Task<IEnumerable<LibraryDependency>> GetDependencies(WalkProviderMatch match, FrameworkName targetFramework)
        {
            var description = _dependencyProvider.GetDescription(match.Library, targetFramework);

            return Task.FromResult(description.Dependencies);
        }
Пример #11
0
 public Task CopyToAsync(WalkProviderMatch match, Stream stream)
 {
     // We never call this on local providers
     throw new NotImplementedException();
 }
 public Task CopyToAsync(WalkProviderMatch match, Stream stream)
 {
     // Do nothing, the package is embedded
     return(Task.FromResult(0));
 }
 public Task <IEnumerable <LibraryDependency> > GetDependencies(WalkProviderMatch match, FrameworkName targetFramework)
 {
     return(Task.FromResult(Enumerable.Empty <LibraryDependency>()));
 }
Пример #14
0
 public Task CopyToAsync(WalkProviderMatch match, Stream stream)
 {
     // Do nothing, the package is embedded
     return Task.FromResult(0);
 }
Пример #15
0
 public Task<IEnumerable<LibraryDependency>> GetDependencies(WalkProviderMatch match, FrameworkName targetFramework)
 {
     return Task.FromResult(Enumerable.Empty<LibraryDependency>());
 }
Пример #16
0
        public Task <IEnumerable <LibraryDependency> > GetDependencies(WalkProviderMatch match, FrameworkName targetFramework)
        {
            var description = _dependencyProvider.GetDescription(match.Library, targetFramework);

            return(Task.FromResult(description.Dependencies));
        }
Пример #17
0
 public Task<RuntimeFile> GetRuntimes(WalkProviderMatch match, FrameworkName targetFramework)
 {
     if (match.Library.Name.Equals(ImplicitRuntimePackageId) && match.Library.Version.Equals(ImplicitRuntimePackageVersion))
     {
         return Task.FromResult(ImplicitRuntimeFile);
     }
     return Task.FromResult<RuntimeFile>(null);
 }
Пример #18
0
 public async Task<RuntimeFile> GetRuntimes(WalkProviderMatch match, FrameworkName targetFramework)
 {
     using (var stream = await _source.OpenRuntimeStreamAsync(new PackageInfo
     {
         Id = match.Library.Name,
         Version = match.Library.Version,
         ContentUri = match.Path
     }))
     {
         if (stream != null)
         {
             var formatter = new RuntimeFileFormatter();
             using (var reader = new StreamReader(stream))
             {
                 return formatter.ReadRuntimeFile(reader);
             }
         }
     }
     return null;
 }
Пример #19
0
 public Task CopyToAsync(WalkProviderMatch match, Stream stream)
 {
     // We never call this on local providers
     throw new NotImplementedException();
 }