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; } } } } }
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); } }
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(); } }
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); }
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)); } }