コード例 #1
0
ファイル: NugetService.cs プロジェクト: ahjohannessen/ripple
        public NugetService(Solution solution)
        {
            //_defaultPackageSource = new PackageSource(NuGetConstants.DefaultFeedUrl);

            var factory = new PackageRepositoryFactory();

            _remoteRepository = factory.CreateRepository(GalleryUrl);
            _localRepository = factory.CreateRepository(solution.PackagesFolder());

            _sourceRepository = new AggregateRepository(new[] { _remoteRepository, _localRepository });

            _fileSystem = new PhysicalFileSystem(solution.PackagesFolder());
            _pathResolver = new DefaultPackagePathResolver(_fileSystem);

            _console = new Console();
            _packageManager = new PackageManager(_sourceRepository, _pathResolver, _fileSystem, _localRepository){
                Logger = _console
            };

            _packages = new Cache<NugetDependency, IPackage>(dep =>
            {
                Install(dep);
                return _sourceRepository.FindPackage(dep.Name, dep.Version);
            });
        }
コード例 #2
0
        protected override void ExecuteTask()
        {
            string dir = SolutionDir.FullName;
            string repositoryPath = GetRepositoryPathFromSolution(dir);

            _fileSystem = new PhysicalFileSystem(dir);
            RepositoryFactory = new PackageRepositoryFactory();
            SourceProvider = new PackageSourceProvider(new Settings(_fileSystem));
            var repo = RepositoryFactory.CreateRepository(repositoryPath);

            Log(Level.Debug, "Repo: {0}, Count: {1}", repo.Source, repo.GetPackages().Count());

            var fw = VersionUtility.ParseFrameworkName(Framework);
            List<string> files = new List<string>(), references = new List<string>();
            foreach (var deps in Dependencies)
            {
                foreach (var dep in deps.Dependencies)
                {
                    var package = repo.FindPackage(dep.Id, dep.VersionSpec, !String.IsNullOrWhiteSpace(dep.VersionSpec.MinVersion.SpecialVersion), false);
                    if (package == null)
                        package = repo.FindPackage(dep.Id, dep.VersionSpec, true, false);
                    if (package == null)
                        package = repo.FindPackage(dep.Id, dep.VersionSpec, true, true);
                    if (package == null)
                        throw new BuildException(String.Format("Can't find package {0} with min version {1}", dep.Id, dep.MinVersion), Location);

                    string pkgPath = Path.Combine(repositoryPath, package.Id + "." + package.Version);

                    var package_files = package.GetLibFiles().ToList();
                    IEnumerable<IPackageFile> compatible_files;
                    Log(Level.Debug, "Found package {0} with {1} file(s) - {2}", package.Id, package_files.Count, package.GetType());
                    if (!VersionUtility.TryGetCompatibleItems(fw, package_files, out compatible_files))
                        throw new BuildException("Couldn't get compatible files.");

                    foreach (var f in compatible_files)
                    {
                        var extension = Path.GetExtension(f.Path);
                        
                        var path = Path.Combine(pkgPath, f.Path);
                        Log(Level.Debug, "  - Found compatible file {1} ({0}) - {2}", f.Path, f.EffectivePath, path);
                        if (extension == ".dll" || extension == ".exe")
                            references.Add(path);
                        files.Add(path);
                    }
                }
            }

            if (FilesId != null)
            {
                PatternSet ps = new PatternSet();
                ps.Include.AddRange(files.Select(MakePattern).ToArray());
                Project.DataTypeReferences.Add(FilesId, ps);
            }
            if (ReferencesId != null)
            {
                PatternSet ps = new PatternSet();
                ps.Include.AddRange(references.Select(MakePattern).ToArray());
                Project.DataTypeReferences.Add(ReferencesId, ps);
            }

            Log(Level.Info, "Found {0} file(s) and {1} reference(s)", files.Count, references.Count);
        }
コード例 #3
0
        private async Task Initialize()
        {
            var listEndpoints = await GetListEndpointsAsync(_sourceProvider).ConfigureAwait(false);

            var repositoryFactory = new PackageRepositoryFactory();

            var repositories = listEndpoints
                .Select(s => repositoryFactory.CreateRepository(s))
                .ToList();

            _repository = new AggregateRepository(repositories);
        }
 public static IPackageRepository CreateRepository()
 {
     IPackageRepositoryFactory factory = new PackageRepositoryFactory();
     IPackageRepository repository = factory.CreateRepository(new PackageSource("https://packages.nuget.org/v1/FeedService.svc/", "NuGet.org"));
     return repository;
 }