private async Task UpdateAllProjects(Solution solution)
    {
        _returnResults = true;

        await Run();

        var findPackage = new FindPackageCommand(solution.SolutionFullPath, NugetPackage, true);

        findPackage.Execute();
        var results = findPackage.Results;

        //
        // Get the intended Nuget Package information from nuget.org
        //
        var request = NugetPackageHttpRequest.QueryRequest(NugetPackage, true);
        var result  = await request.ExecuteAsync();

        var found = ValidateNugetPackage(result);

        foreach (var item in results)
        {
            var foundProject = solution.Projects.FirstOrDefault(x => x.ProjectName.Equals(item.ProjectName));
            UpdateProjectNugetPackage(foundProject);
        }
    }
    private async Task UpdatePerProject(Solution solution)
    {
        //
        // Validate the project existence
        //
        var foundProject = solution.Projects.FirstOrDefault(x => x.ProjectName.Equals(ProjectName));

        if (foundProject == null)
        {
            throw new ProjectNotFoundException($"Cannot find project name '{ProjectName}' in this solution");
        }

        //
        // Validate the nuget package existence
        //
        var foundNugetPackage = foundProject.Packages.FirstOrDefault(x => x.PackageName.Equals(NugetPackage));

        if (foundNugetPackage == null)
        {
            throw new NugetPackageNotFoundException($"Cannot find the nuget package '{NugetPackage}' for project '{ProjectName}'");
        }

        //
        // Get the intended Nuget Package information from nuget.org
        var request = NugetPackageHttpRequest.QueryRequest(NugetPackage, true);
        var result  = await request.ExecuteAsync();

        var found = ValidateNugetPackage(result);

        if (found)
        {
            UpdateProjectNugetPackage(foundProject);
        }
    }
示例#3
0
    public async Task Query_Package_Expected_Successful(string packageName, bool preRelease)
    {
        //
        // Arrange
        var request = NugetPackageHttpRequest.QueryRequest(packageName, preRelease);

        //
        // Act
        var response = await request.ExecuteAsync();

        var foundVersion = response.GetCurrentVersion(packageName);

        //
        // Assert
        Assert.True(foundVersion.StartsWith("3.", System.StringComparison.Ordinal) ||
                    foundVersion.StartsWith("4.", System.StringComparison.Ordinal));
    }
    private async Task GetOnlinePackagesAsync(Project project)
    {
        var projectPackages = new List <NugetPackageInformationComparer>();

        if (project.ProjectType == SolutionProjectElement.CSharpProject)
        {
            foreach (var package in project.Packages)
            {
                if (NugetPackageCache.Instance.ContainsPackage(package.PackageName))
                {
                    var latestPackageInfo = NugetPackageCache.Instance.GetPackage(package.PackageName);
                    projectPackages.Add(new NugetPackageInformationComparer(package, latestPackageInfo.Data));

                    continue;
                }

                var requestor = NugetPackageHttpRequest.QueryRequest(package.PackageName, _showPreReleaseNugetPackages);
                var response  = await requestor.ExecuteAsync();

                var selectedDatum = response.Data.FirstOrDefault(x => x.Id.Equals(package.PackageName));

                // if selectedDatum is null, try do ToLower() on the Id property.
                if (selectedDatum == null)
                {
                    selectedDatum = response.Data.FirstOrDefault(x => x.Id.ToLower().Equals(package.PackageName));
                }

                if (selectedDatum != null)
                {
                    NugetPackageCache.Instance.AddPackage(selectedDatum.Id, selectedDatum.Version, selectedDatum);
                }
                else
                {
                    NugetPackageCache.Instance.AddNotFoundPackage(package.PackageName, package.Version);
                }

                projectPackages.Add(new NugetPackageInformationComparer(package, selectedDatum));

                _writeProgressHandler?.Invoke();
            }
        }

        Result[project.ProjectName] = projectPackages;
    }
示例#5
0
    private async Task <Dictionary <string, string> > QueryNugetPackageOnlineAsync(string[] packageNameList, Action writeProgressHandler = null)
    {
        var result = new Dictionary <string, string>();

        foreach (var packageName in packageNameList)
        {
            var request  = NugetPackageHttpRequest.QueryRequest(packageName, false);
            var response = await request.ExecuteAsync();

            if (response.Exception != null)
            {
                result[packageName] = "Unable to connect to the internet";
            }
            else
            {
                var packageVersion = response.GetCurrentVersion(packageName);
                result[packageName] = packageVersion;
            }

            writeProgressHandler?.Invoke();
        }

        return(result);
    }