public override void ExecuteCommand()
        {
            if (string.IsNullOrEmpty(Directory))
            {
                Directory = Environment.CurrentDirectory;
            }

            if (_repository == null)
            {
                _repository = AggregateRepositoryHelper.CreateAggregateRepositoryFromSources(RepositoryFactory, SourceProvider, Source);
            }

            var packageFiles = _fileSystem.GetFiles(Directory, "packages.config", true).ToList();
            Console.WriteLine("Processing : {0} files.",packageFiles.Count);
            Parallel.ForEach(packageFiles, packageFile =>
                {
                    Console.WriteLine("\t{0}", packageFile);
                    var newReferences = new List<PackageReference>();
                    var packageFileDetails = new PackageReferenceFile(_fileSystem, packageFile);
                    foreach (var packageReference in packageFileDetails.GetPackageReferences())
                    {
                        Console.WriteLine("\t\t{0}",packageReference.ToString());
                        var exists = _repository.FindPackage(packageReference.Id, packageReference.Version);
                        if (exists != null)
                        {
                            Console.WriteLine("\t\t\tExists, not changing.");
                            newReferences.Add(packageReference);
                        }
                        else
                        {
                            var package = _repository.FindPackagesById(packageReference.Id).FirstOrDefault();
                            if (package == null)
                            {
                                Console.WriteLine("\t\t\tNot found, no change.");
                                newReferences.Add(packageReference);
                            }
                            else
                            {
                                var newReference = new PackageReference(package.Id, package.Version, new VersionSpec(), new FrameworkName(".NET Framework, Version=4.0"), false);
                                Console.WriteLine("\t\t\tUpdated to {0}", newReference.ToString());
                                newReferences.Add(newReference);
                            }
                        }
                    }

                    //TODO Clear the file (must be an easier way).
                    Console.WriteLine("Clearing existing file...");
                    foreach (var packageReference in packageFileDetails.GetPackageReferences())
                    {
                        packageFileDetails.DeleteEntry(packageReference.Id, packageReference.Version);
                    }

                    //Add the new references.
                    Console.WriteLine("Adding new references...");
                    foreach (var packageReference in newReferences)
                    {
                        packageFileDetails.AddEntry(packageReference.Id, packageReference.Version);
                    }
                });
        }
Exemple #2
0
        public void ShouldGiveNameAndVersionWhenConvertedToString()
        {
            //GIVEN
            var name             = Any.Instance <string>();
            var version          = Any.Instance <string>();
            var packageReference = new PackageReference(name, version);

            //WHEN
            var stringRepresentation = packageReference.ToString();

            //THEN
            stringRepresentation.Should().Be($"{name}, Version {version}");
        }
Exemple #3
0
        public override void ExecuteCommand()
        {
            if (string.IsNullOrEmpty(Directory))
            {
                Directory = Environment.CurrentDirectory;
            }

            if (_repository == null)
            {
                _repository = AggregateRepositoryHelper.CreateAggregateRepositoryFromSources(RepositoryFactory, SourceProvider, Source);
            }

            var packageFiles = _fileSystem.GetFiles(Directory, "packages.config", true).ToList();

            Console.WriteLine("Processing : {0} files.", packageFiles.Count);
            Parallel.ForEach(packageFiles, packageFile =>
            {
                Console.WriteLine("\t{0}", packageFile);
                var newReferences      = new List <PackageReference>();
                var packageFileDetails = new PackageReferenceFile(_fileSystem, packageFile);
                foreach (var packageReference in packageFileDetails.GetPackageReferences())
                {
                    Console.WriteLine("\t\t{0}", packageReference.ToString());
                    var exists = _repository.FindPackage(packageReference.Id, packageReference.Version);
                    if (exists != null)
                    {
                        Console.WriteLine("\t\t\tExists, not changing.");
                        newReferences.Add(packageReference);
                    }
                    else
                    {
                        var package = _repository.FindPackagesById(packageReference.Id).FirstOrDefault();
                        if (package == null)
                        {
                            Console.WriteLine("\t\t\tNot found, no change.");
                            newReferences.Add(packageReference);
                        }
                        else
                        {
                            var newReference = new PackageReference(package.Id, package.Version, new VersionSpec(), new FrameworkName(".NET Framework, Version=4.0"), false);
                            Console.WriteLine("\t\t\tUpdated to {0}", newReference.ToString());
                            newReferences.Add(newReference);
                        }
                    }
                }

                //TODO Clear the file (must be an easier way).
                Console.WriteLine("Clearing existing file...");
                foreach (var packageReference in packageFileDetails.GetPackageReferences())
                {
                    packageFileDetails.DeleteEntry(packageReference.Id, packageReference.Version);
                }

                //Add the new references.
                Console.WriteLine("Adding new references...");
                foreach (var packageReference in newReferences)
                {
                    packageFileDetails.AddEntry(packageReference.Id, packageReference.Version);
                }
            });
        }