Exemple #1
0
        public void LoadVersion()
        {
            DirectoryInfo di = new DirectoryInfo(Path.Combine(new DirectoryInfo(".").FullName, this.Name));

            if (di.Exists)
            {
                var modFile = Path.Combine(di.FullName, "mod.json");
                if (File.Exists(modFile))
                {
                    using (StreamReader file = File.OpenText(modFile))
                    {
                        var modjson = file.ReadToEnd();
                        Mod tempMod = JsonConvert.DeserializeObject <Mod>(modjson);
                        if (tempMod.Version != null && tempMod.Version != "")
                        {
                            if (Semver.SemVersion.TryParse(tempMod.Version, out tempMod.SemVer) == false)
                            {
                                if (Semver.SemVersion.TryParse(tempMod.Version.Substring(1), out tempMod.SemVer) == false)
                                {
                                    tempMod.SemVer = new Semver.SemVersion(0);
                                }
                            }


                            this.SemVer = tempMod.SemVer;
                        }
                    }
                }
            }
        }
Exemple #2
0
        private static IEnumerable <int> CalculateMajorVersions(YamlMetaData yamlMetaData)
        {
            // Try to find out which major versions are supported
            var  currentDocVersion = GetCurrentDocVersion();
            var  semverCurrent     = new Semver.SemVersion(currentDocVersion);
            bool hasFrom           = Semver.SemVersion.TryParse(yamlMetaData.VersionFrom, out Semver.SemVersion semverFrom);
            bool hasTo             = Semver.SemVersion.TryParse(yamlMetaData.VersionTo, out Semver.SemVersion semverTo);

            if (hasFrom == false)
            {
                semverFrom = new Semver.SemVersion(currentDocVersion);
            }
            if (hasTo == false)
            {
                semverTo = semverFrom < semverCurrent ? semverCurrent : semverFrom;
            }
            if (semverFrom > semverTo)
            {
                semverFrom = semverTo;
            }

            var matchingMajorVersions = new List <int>();

            for (int i = semverFrom.Major; i <= semverTo.Major; i++)
            {
                yield return(i);
            }
        }
Exemple #3
0
        protected override void AfterMigration(MigrationRunner sender, MigrationEventArgs e)
        {
            if (e.ProductName != Constants.System.UmbracoMigrationName)
            {
                return;
            }

            var v730 = new Semver.SemVersion(new Version(7, 3, 0));

            var doMedia   = e.ConfiguredSemVersion < v730;
            var doContent = e.ConfiguredSemVersion < v730;

            if (doMedia)
            {
                var mediaService = (MediaService)ApplicationContext.Current.Services.MediaService;
                mediaService.RebuildXmlStructures();

                // note: not re-indexing medias?
            }

            if (doContent)
            {
                // rebuild Xml in database
                var contentService = (ContentService)ApplicationContext.Current.Services.ContentService;
                contentService.RebuildXmlStructures();

                // refresh the Xml cache
                content.Instance.RefreshContentFromDatabase();
            }
        }
Exemple #4
0
 public bool NeedsUpdate()
 {
     if (this.SemVer == null)
     {
         this.LoadVersion();
     }
     if (this.Releases != null && this.Releases.Count > 0)
     {
         try
         {
             this.fetchLatestReleaseFromWebsite();
         }
         catch
         {
             try
             {
                 this.fetchReleasesFromWebsite();
             }
             catch
             {
             }
         }
     }
     if (this.Releases != null && this.Releases.Count > 0)
     {
         Semver.SemVersion TagNameVersion = null;
         if (Semver.SemVersion.TryParse(this.LatestRelease.TagName.Substring(1), out TagNameVersion) == false)
         {
             Semver.SemVersion.TryParse(this.LatestRelease.TagName, out TagNameVersion);
         }
         if (TagNameVersion != null && TagNameVersion > this.SemVer)
         {
             return(true);
         }
     }
     return(false);
 }
Exemple #5
0
        public async Task <UpdateInfo> CheckUpdate(UpdateType type = UpdateType.Patch, Version currentVersion = null)
        {
            var github = new GitHubClient(new ProductHeaderValue(githubApiAccessId));

            var releases = await github.Repository.Release.GetAll(repositoryId);

            if (currentVersion == null)
            {
                currentVersion = Assembly.GetEntryAssembly().GetName().Version;
            }

            Semver.SemVersion curver = new Semver.SemVersion(currentVersion.Major, currentVersion.Minor, currentVersion.Build, string.Empty, currentVersion.Revision.ToString());
            var result = releases.FirstOrDefault((r) =>
            {
                var tagMatch = VersionExp.Match(r.TagName);
                if (!tagMatch.Success)
                {
                    return(false);
                }

                Semver.SemVersion relver;
                var parsed = Semver.SemVersion.TryParse(tagMatch.Groups[1].Value, out relver);
                if (!parsed)
                {
                    return(false);
                }

                switch (type)
                {
                case UpdateType.Major:
                    relver = new Semver.SemVersion(relver.Major);
                    break;

                case UpdateType.Minor:
                    relver = new Semver.SemVersion(relver.Major, relver.Minor);
                    break;

                case UpdateType.Patch:
                    relver = new Semver.SemVersion(relver.Major, relver.Minor, relver.Patch);
                    break;
                }

                return(relver > curver);
            });

            if (result == null)
            {
                return(null);
            }

            return(new UpdateInfo
            {
                Description = result.Body,
                Name = result.Name,
                Version = result.TagName,
                Assets = result.Assets.Select(a => new UpdateAssetsInfo
                {
                    Name = a.Name,
                    Url = a.Url,
                    BrowserUrl = a.BrowserDownloadUrl
                }).ToList()
            });
        }
        public async Task <DeploymentConfig> FetchDeploymentConfig()
        {
            // Increment app version
            LocalAppDeploymentConfig IncrementVersion(string exeRoot, AppDeploymentConfig app)
            {
                var version     = app.AppIdentity.Version;
                var nextVersion = new Semver.SemVersion(version.Major, version.Minor, version.Patch + 1);

                return(new LocalAppDeploymentConfig(exeRoot,
                                                    new AppIdentity(app.AppIdentity.Id, nextVersion),
                                                    app.TargetClusters,
                                                    app.Properties));
            }

            // Convert to LocalAppDeploymentConfig
            LocalAppDeploymentConfig ToLocalAppConfig(string exeRoot, AppDeploymentConfig app) =>
            new LocalAppDeploymentConfig(
                exeRoot,
                new AppIdentity(app.AppIdentity.Id, app.AppIdentity.Version),
                app.TargetClusters,
                app.Properties);

            // Check if the app has an available update
            LocalAppDeploymentConfig CheckAppUpdated(AppDeploymentConfig input)
            {
                var exeRoot = GetBinariesPath(input);

                // Carry newly generated versions over
                if (ActiveConfiguration != null &&
                    ActiveConfiguration.TryGetValue(input.AppIdentity.Id, out var a) &&
                    a is LocalAppDeploymentConfig activeVersion)
                {
                    var nextVersion = IncrementVersion(exeRoot, input);

                    if (activeVersion.EntryPointCreatedDate < nextVersion.EntryPointCreatedDate &&
                        nextVersion.EntryPointCreatedDate < DateTimeOffset.UtcNow.AddSeconds(-10))
                    {
                        return(nextVersion);
                    }
                    else
                    {
                        return(activeVersion);
                    }
                }
                else
                {
                    return(ToLocalAppConfig(exeRoot, input));
                }
            }

            using (var file = File.Open(_deploymentConfigPath, FileMode.Open, FileAccess.Read))
                using (var sr = new StreamReader(file))
                {
                    // Check if any changes have been made
                    var updates = _serializer
                                  .Deserialize(await sr.ReadToEndAsync())
                                  .Select(CheckAppUpdated)
                                  .ToList();

                    ActiveConfiguration = updates.ToDictionary(keySelector: u => u.AppIdentity.Id);

                    return(new DeploymentConfig(updates));
                }
        }