コード例 #1
0
        protected virtual async Task <string> GetLatestVersion(JProperty package, string currentVersion,
                                                               bool includePreviews = false, bool switchToStable = false)
        {
            if (_fileVersionStorage.ContainsKey(package.Name))
            {
                return(_fileVersionStorage[package.Name]);
            }

            string newVersion = currentVersion;

            if (includePreviews || (!switchToStable && currentVersion.Contains("-preview")))
            {
                var mygetPackage = (await _myGetPackageListFinder.GetPackages()).Packages.FirstOrDefault(p => p.Id == package.Name);
                if (mygetPackage != null)
                {
                    newVersion = mygetPackage.Versions.Last();
                }
            }
            else
            {
                newVersion = CmdHelper.RunCmdAndGetOutput($"npm show {package.Name} version");
            }


            _fileVersionStorage[package.Name] = newVersion;

            return(newVersion);
        }
コード例 #2
0
        private async Task <string> UpdateVoloPackagesAsync(string content, bool includePreviews = false, bool switchToStable = false)
        {
            string packageId = null;

            try
            {
                var doc = new XmlDocument()
                {
                    PreserveWhitespace = true
                };

                doc.LoadXml(content);

                var packageNodeList = doc.SelectNodes("/Project/ItemGroup/PackageReference[starts-with(@Include, 'Volo.')]");

                if (packageNodeList != null)
                {
                    foreach (XmlNode package in packageNodeList)
                    {
                        if (package.Attributes == null)
                        {
                            continue;
                        }

                        packageId = package.Attributes["Include"].Value;

                        var versionAttribute = package.Attributes["Version"];
                        var currentVersion   = versionAttribute.Value;
                        var packageVersion   = SemanticVersion.Parse(currentVersion);

                        Logger.LogDebug("Checking package: \"{0}\" - Current version: {1}", packageId, packageVersion);


                        if (includePreviews || (currentVersion.Contains("-preview") && !switchToStable))
                        {
                            var latestVersion = (await _myGetPackageListFinder.GetPackages()).Packages
                                                .FirstOrDefault(p => p.Id == packageId)
                                                ?.Versions.LastOrDefault();

                            if (currentVersion != latestVersion)
                            {
                                Logger.LogInformation("Updating package \"{0}\" from v{1} to v{2}.", packageId, currentVersion, latestVersion);
                                versionAttribute.Value = latestVersion;
                            }
                            else
                            {
                                Logger.LogDebug("Package: \"{0}-v{1}\" is up to date.", packageId, currentVersion);
                            }
                        }
                        else
                        {
                            var latestVersion = await _nuGetService.GetLatestVersionOrNullAsync(packageId);

                            if (latestVersion != null && (currentVersion.Contains("-preview") || packageVersion < latestVersion))
                            {
                                Logger.LogInformation("Updating package \"{0}\" from v{1} to v{2}.", packageId, packageVersion.ToString(), latestVersion.ToString());
                                versionAttribute.Value = latestVersion.ToString();
                            }
                            else
                            {
                                Logger.LogDebug("Package: \"{0}-v{1}\" is up to date.", packageId, packageVersion);
                            }
                        }
                    }

                    return(await Task.FromResult(doc.OuterXml));
                }
            }
            catch (Exception ex)
            {
                Logger.LogError("Cannot update volo packages! An error occured while updating the package \"{0}\". Error: {1}", packageId, ex.Message);
                Logger.LogException(ex);
            }

            return(await Task.FromResult(content));
        }