private IEnumerable <PackageIdentity> GetConsolidatedPackageIdentityForResolver()
        {
            PackageIdentity identity = null;

            // If Version is specified by commandline parameter
            if (!string.IsNullOrEmpty(Version))
            {
                NuGetVersion    nVersion  = PowerShellPackage.GetNuGetVersionFromString(Version);
                PackageIdentity pIdentity = new PackageIdentity(Id, nVersion);
                identity = Client.PackageRepositoryHelper.ResolvePackage(V2LocalRepository, pIdentity, true);
            }
            else
            {
                VsProject target = this.GetProject(true);
                InstalledPackageReference installedPackage = GetInstalledReference(target, Id);
                if (installedPackage == null)
                {
                    Log(MessageLevel.Error, Resources.Cmdlet_PackageNotInstalled, Id);
                }
                else
                {
                    identity = installedPackage.Identity;
                    Version  = identity.Version.ToNormalizedString();
                }
            }

            return(new List <PackageIdentity>()
            {
                identity
            });
        }
Ejemplo n.º 2
0
        protected Dictionary <VsProject, IEnumerable <JObject> > GetPackageUpdatesFromRemoteSource(string filter, bool allowPrerelease, int skip, int take, bool allVersions)
        {
            IEnumerable <VsProject> targets = GetProjects();
            Dictionary <VsProject, IEnumerable <JObject> > packageUpdates = new Dictionary <VsProject, IEnumerable <JObject> >();

            foreach (VsProject project in targets)
            {
                Task <IEnumerable <JObject> > task = project.InstalledPackages.GetAllInstalledPackagesAndMetadata();
                IEnumerable <JObject>         installedJObjects = task.Result;
                List <JObject> filteredUpdates = new List <JObject>();

                foreach (JObject jObject in installedJObjects)
                {
                    // Find packages update
                    List <JObject> updates         = PowerShellPackage.GetLastestJObjectsForPackage(ActiveSourceRepository, jObject, project, allowPrerelease, skip, take, allVersions);
                    NuGetVersion   originalVersion = PowerShellPackage.GetNuGetVersionFromString(jObject.Value <string>(Properties.Version));

                    if (!string.IsNullOrEmpty(filter))
                    {
                        updates = updates.Where(p => p.Value <string>(Properties.PackageId).StartsWith(filter, StringComparison.OrdinalIgnoreCase)).ToList();
                    }

                    filteredUpdates.AddRange(updates);
                }
                packageUpdates.Add(project, filteredUpdates);
            }
            return(packageUpdates);
        }
Ejemplo n.º 3
0
 private PackageIdentity ParsePackageIdentityFromHttpSource(string sourceUrl)
 {
     if (!string.IsNullOrEmpty(sourceUrl))
     {
         string lastPart = sourceUrl.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries).LastOrDefault();
         lastPart = lastPart.Replace(NuGet.Constants.PackageExtension, "");
         string[]      parts             = lastPart.Split(new string[] { "." }, StringSplitOptions.RemoveEmptyEntries);
         StringBuilder builderForId      = new StringBuilder();
         StringBuilder builderForVersion = new StringBuilder();
         foreach (string s in parts)
         {
             int  n;
             bool isNumeric = int.TryParse(s, out n);
             if (!isNumeric)
             {
                 builderForId.Append(s);
                 builderForId.Append(".");
             }
             else
             {
                 builderForVersion.Append(s);
                 builderForVersion.Append(".");
             }
         }
         NuGetVersion nVersion = PowerShellPackage.GetNuGetVersionFromString(builderForVersion.ToString().TrimEnd('.'));
         return(new PackageIdentity(builderForId.ToString().TrimEnd('.'), nVersion));
     }
     return(null);
 }
        /// <summary>
        /// Returns single package identity for resolver when Id is specified
        /// </summary>
        /// <returns></returns>
        private List <PackageIdentity> GetPackageIdentityForResolver()
        {
            VsProject target = this.GetProject(true);
            InstalledPackageReference installedPackage = GetInstalledReference(target, Id);

            // If package Id cannot be found in Installed packages.
            if (installedPackage == null)
            {
                WriteError(string.Format(Resources.Cmdlet_PackageNotInstalled, Id));
            }

            PackageIdentity identity = installedPackage.Identity;

            if (!string.IsNullOrEmpty(Version))
            {
                NuGetVersion nVersion = PowerShellPackage.GetNuGetVersionFromString(Version);
                // If specified Version does not match the installed version
                if (nVersion != identity.Version)
                {
                    WriteError(string.Format(VsResources.UnknownPackageInProject, Id + " " + Version, target.Name));
                }
            }

            // Finally resolve the identity against local repository.
            PackageIdentity resolvedIdentity = Client.PackageRepositoryHelper.ResolvePackage(V2LocalRepository, identity, true);

            return(new List <PackageIdentity>()
            {
                resolvedIdentity
            });
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Returns single package identity for resolver when Id is specified
        /// </summary>
        /// <returns></returns>
        private List <PackageIdentity> GetPackageIdentityForResolver()
        {
            PackageIdentity identity = null;

            // If Version is specified by commandline parameter
            if (!string.IsNullOrEmpty(Version))
            {
                NuGetVersion    nVersion  = PowerShellPackage.GetNuGetVersionFromString(Version);
                PackageIdentity pIdentity = new PackageIdentity(Id, nVersion);
                identity = Client.PackageRepositoryHelper.ResolvePackage(ActiveSourceRepository, V2LocalRepository, pIdentity, IncludePrerelease.IsPresent);
            }
            else
            {
                // Get the latest Version from package repository.
                IEnumerable <FrameworkName> frameworks = this.Projects.FirstOrDefault().GetSupportedFrameworks();
                Version  = PowerShellPackage.GetLastestVersionForPackage(ActiveSourceRepository, Id, frameworks, IncludePrerelease.IsPresent);
                identity = new PackageIdentity(Id, NuGetVersion.Parse(Version));
            }

            return(new List <PackageIdentity>()
            {
                identity
            });
        }
        private void PerformPackageUpdates()
        {
            // UpdateAll
            if (!_idSpecified)
            {
                Dictionary <VsProject, List <PackageIdentity> > dictionary = GetInstalledPackagesForAllProjects();
                foreach (KeyValuePair <VsProject, List <PackageIdentity> > entry in dictionary)
                {
                    IEnumerable <VsProject> targetedProjects = new List <VsProject> {
                        entry.Key
                    };
                    List <PackageIdentity> identities = entry.Value;
                    // Execute update for each of the project inside the solution
                    foreach (PackageIdentity identity in identities)
                    {
                        // Find packages update
                        PackageIdentity update = PowerShellPackage.GetLastestUpdateForPackage(ActiveSourceRepository, identity, entry.Key, IncludePrerelease.IsPresent, Safe.IsPresent);
                        ExecuteSinglePackageAction(update, targetedProjects);
                    }
                }
            }
            else
            {
                // Resolve package Id to be updated from the local repository
                PackageIdentity installedIdentity = new PackageIdentity(Id, null);
                Client.PackageRepositoryHelper.ResolvePackage(V2LocalRepository, installedIdentity, IncludePrerelease.IsPresent);

                Dictionary <VsProject, PackageIdentity> dictionary = GetInstalledPackageWithId(Id);
                // If package Id exists in Packages folder but is not actually installed to the current project, throw.
                if (dictionary.Count == 0)
                {
                    WriteError(string.Format(VsResources.PackageNotInstalledInAnyProject, Id));
                }

                foreach (KeyValuePair <VsProject, PackageIdentity> entry in dictionary)
                {
                    IEnumerable <VsProject> targetedProjects = new List <VsProject> {
                        entry.Key
                    };
                    PackageIdentity identity = entry.Value;
                    PackageIdentity update   = null;
                    // Find package update
                    if (!string.IsNullOrEmpty(Version))
                    {
                        NuGetVersion nVersion;
                        if (IsVersionEnum)
                        {
                            nVersion = PowerShellPackage.GetUpdateVersionForDependentPackage(ActiveSourceRepository, identity, UpdateVersionEnum, entry.Key.GetSupportedFrameworks(), IncludePrerelease.IsPresent);
                        }
                        else
                        {
                            nVersion = PowerShellPackage.GetNuGetVersionFromString(Version);
                        }

                        if (nVersion != null)
                        {
                            PackageIdentity pIdentity = new PackageIdentity(Id, nVersion);
                            update = Client.PackageRepositoryHelper.ResolvePackage(ActiveSourceRepository, V2LocalRepository, pIdentity, IncludePrerelease.IsPresent);
                        }
                    }
                    else
                    {
                        update = PowerShellPackage.GetLastestUpdateForPackage(ActiveSourceRepository, identity, entry.Key, IncludePrerelease.IsPresent, Safe.IsPresent);
                        if (update.Version <= identity.Version)
                        {
                            update = null;
                            Log(MessageLevel.Info, Resources.Cmdlet_NoPackageUpdates);
                        }
                    }

                    ExecuteSinglePackageAction(update, targetedProjects);
                }
            }
        }