Пример #1
0
        internal static void InstallDependencies(PackageJson packageJson, PackageSourceListRequest request)
        {
            //TODO dependency chain check

            //let's install dependency first in case it is needed for installing the actual package
            if (packageJson.DependencyObjects != null)
            {
                var dependencies = GetDependencies(packageJson, request);

                if (dependencies != null)
                {
                    foreach (var dep in dependencies.Where(dep => (dep != null) && !dep.IsCommonDefinition))
                    {
                        //dependency source trusty follows its parent
                        var id = PackageSourceListRequest.CreateCanonicalId(dep, dep.Name);
                        InstallProviderFromInstaller(dep, id, request);
                    }
                }
            }
        }
        internal static void InstallPowershellArtifacts(PackageJson package, string fastPath, PackageSourceListRequest request)
        {
            var provider1 = PackageSourceListRequest.FindProvider(request, package.Type, request, true);

            if (provider1 == null)
            {
                return;
            }

            // As the PowerShellGet may access the -source via $request.Options or PackageSources,
            // so we need to fill in both options and sources parameters
            var installRequest = PackageSourceListRequest.ExtendRequest(new Dictionary <string, string[]>
            {
                { "Source", new[] { package.Source ?? "" } }
            }, new[] { package.Source ?? "" }, package.IsTrustedSource, request);

            var psid = PackageSourceListRequest.CreateCanonicalId(package, Constants.ProviderNames.PowerShellGet);
            var pkgs = request.PackageManagementService.FindPackageByCanonicalId(psid, installRequest)
                       .Where(each => new SemanticVersion(each.Version) == new SemanticVersion(package.Version)).ToArray();

            switch (pkgs.Length)
            {
            case 0:
                request.Warning(Resources.Messages.CannotFindPackage, Constants.ProviderName, psid);
                break;

            case 1:
                InstallPackageViaPowerShellGet(package, request, pkgs);
                break;

            default:
                request.Warning(Resources.Messages.FoundMorePackages, Constants.ProviderName, pkgs.Length, psid);
                break;
            }
            return;
        }
Пример #3
0
        internal static void InstallNuGetPackage(PackageJson package, string fastPath, PackageSourceListRequest request)
        {
            request.Debug(Resources.Messages.DebugInfoCallMethod, Constants.ProviderName, string.Format(CultureInfo.InvariantCulture, "InstallNuGetPackage' - name='{0}', fastPath='{1}'", package.Name, fastPath));

            var canonicalId = PackageSourceListRequest.CreateCanonicalId(package, Constants.ProviderNames.NuGet); // "nuget:jquery/2.1.0#http://nuget.org/api/v2";
            var pkgs        = request.PackageManagementService.FindPackageByCanonicalId(canonicalId, request.As <IHostApi>())
                              .Where(each => string.IsNullOrWhiteSpace(package.Version) ||
                                     (new SemanticVersion(each.Version) == new SemanticVersion(package.Version))).ToArray();

            switch (pkgs.Length)
            {
            case 0:
                request.Warning(Resources.Messages.CannotFindPackage, Constants.ProviderName, canonicalId);
                return;

            case 1:
                InstallPackageReference(package, request, pkgs);
                return;

            default:
                request.Warning(Resources.Messages.FoundMorePackages, Constants.ProviderName, pkgs.Length, canonicalId);
                return;
            }
        }
Пример #4
0
        internal static void DownloadNuGetPackage(string fastPath, string location, PackageSourceListRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException("request");
            }

            request.Debug(Resources.Messages.DebugInfoCallMethod, Constants.ProviderName,
                          string.Format(CultureInfo.InvariantCulture, "DownloadNuGetPackage' - fastReference='{0}', location='{1}'", fastPath, location));

            var package = request.GetPackageByFastPath(fastPath);

            if (package == null)
            {
                request.WriteError(ErrorCategory.InvalidData, fastPath, Resources.Messages.FailedToGetPackageObject, Constants.ProviderName, fastPath);
                return;
            }

            // let the core figure out how to save this package
            var canonicalId = PackageSourceListRequest.CreateCanonicalId(package, Constants.ProviderNames.NuGet); // "nuget:jquery/2.1.0#http://nuget.org/api/v2";
            var pkgs        = request.PackageManagementService.FindPackageByCanonicalId(canonicalId, request.As <IHostApi>())
                              .Where(each => string.IsNullOrWhiteSpace(package.Version) ||
                                     (new SemanticVersion(each.Version) == new SemanticVersion(package.Version))).ToArray();

            switch (pkgs.Length)
            {
            case 0:
                request.Warning(Resources.Messages.CannotFindPackage, Constants.ProviderName, canonicalId);
                return;

            case 1:
                var provider = request.PackageManagementService.GetAvailableProviders(request, new[] { "NuGet" }).FirstOrDefault();
                if (provider != null)
                {
                    var donwloadrequest = PackageSourceListRequest.ExtendRequest(
                        new Dictionary <string, string[]>
                    {
                        { "Destination", new[] { package.Destination ?? "" } }
                    },
                        new[] { package.Source ?? "" },
                        package.IsTrustedSource,
                        request);

                    var downloading = provider.DownloadPackage(pkgs[0], location, donwloadrequest);

                    foreach (var i in downloading)
                    {
                        request.YieldSoftwareIdentity(i.FastPackageReference, i.Name, i.Version, i.VersionScheme, i.Summary, i.Source, i.SearchKey, i.FullPath, i.PackageFilename);

                        if (request.IsCanceled)
                        {
                            downloading.Cancel();
                        }
                    }
                }
                break;

            default:
                request.Warning(Resources.Messages.FoundMorePackages, Constants.ProviderName, pkgs.Length, canonicalId);
                return;
            }
        }