public void Duplicate(VersionControl control) { int index = VersionParent.Children.IndexOf(control); if (index == -1) { return; } VersionController versionController = MainWindow.GetInstance().VersionController; ChangeLog changeLog = versionController.GetChangeLog().Result; VersionRef oldVersionRef = changeLog.Versions[index]; string duplicateName = GetDuplicateName(oldVersionRef.VersionName); VersionRef newVersionRef = new VersionRef(versionController, oldVersionRef.RelativeFilePath, duplicateName); changeLog.Versions.Insert(index + 1, newVersionRef); VersionControl newControl = new VersionControl(newVersionRef); VersionParent.Children.Insert(index + 1, newControl); Version oldVersion = oldVersionRef.GetVersion(false).Result; Version version = new Version(versionController, duplicateName, oldVersion.Description, oldVersion.DownloadLink, oldVersion.ReleaseDate, new System.Collections.Generic.List <ChangeRef>()); if (oldVersion.AdditionalData != null) { version.AdditionalData = (JObject)oldVersion.AdditionalData.DeepClone(); } foreach (ChangeRef oldChangeRef in oldVersion.Changes) { string guid = Guid.NewGuid().ToString(); string newChangePath = Path.Combine(version.VersionName, "changes", $"{guid}.json"); ChangeRef newChangeRef = new ChangeRef(versionController, guid, newChangePath); Change oldChange = oldChangeRef.GetChange(false).Result; Change newChange = new Change(versionController, guid, newChangePath, oldChange.Title, oldChange.Description, newVersionRef); if (oldChange.ReleaseVersion != null) { newChange.ReleaseVersion = new VersionRef(versionController, newVersionRef.RelativeFilePath, newVersionRef.VersionName); } if (oldChange.AdditionalData != null) { newChange.AdditionalData = (JObject)oldChange.AdditionalData.DeepClone(); } version.Changes.Add(newChangeRef); versionController.CacheChange(newChange); } versionController.CacheVersion(version); }
public void CreateVersionPressed(object sender, RoutedEventArgs args) { VersionController versionController = MainWindow.GetInstance().VersionController; string newVersionName = GetNewVersionName(); VersionRef versionRef = new VersionRef(versionController, Path.Combine(newVersionName, "version.json"), newVersionName); VersionControl newControl = new VersionControl(versionRef); VersionParent.Children.Insert(0, newControl); ChangeLog changeLog = versionController.GetChangeLog().Result; changeLog.Versions.Insert(0, versionRef); Version version = new Version(versionController, newVersionName, string.Empty, string.Empty, DateTime.Now, new System.Collections.Generic.List <ChangeRef>()); versionController.CacheVersion(version); ContentArea.GetInstance().OpenPage(ContentArea.PageType.Version, versionRef); }