private bool ExecuteRelease(PublishingVersionInfo info, PluginVersion version) { if (info.Type == PublishingType.Release && info.ReleaseAsPatch) { return(true); } else if (info.Type == PublishingType.Release && !SVNManager.Instance.CreateRelease(version.Product.Name, info.ReleaseVersion)) { this.SetPublishingVersionStatus( info, PublishingStatus.Failed, string.Format("Failed to release new version: {0}.", info.ReleaseVersion)); return(false); } else if (info.Type == PublishingType.Patch && !SVNManager.Instance.ReleasePatch(version.Product.Name, info.Version.VersionNumber)) { this.SetPublishingVersionStatus( info, PublishingStatus.Failed, string.Format("Failed to create patch: {0}.", info.ReleaseVersion)); return(false); } this.UpdatePluginDataVersion(info, version); return(true); }
private bool ExecuteCreateBeta(PublishingVersionInfo info, PluginVersion version, out string path) { string betaPath = Path.Combine(this.PublishOptions.BetasPath, string.Format("{0} - {1}", version.Product.Name, version.VersionNumber)); if (System.IO.Directory.Exists(betaPath)) { Promob.Builder.IO.IOHelper.DeleteDirectory(betaPath); } if (!System.IO.Directory.Exists(this.PublishOptions.BetasPath)) { System.IO.Directory.CreateDirectory(this.PublishOptions.BetasPath); } path = version.CreateBeta(this.PublishOptions.BetasPath).Trim(); if (string.IsNullOrEmpty(path)) { this.SetPublishingVersionStatus( info, PublishingStatus.Failed, string.Format("Failed to create beta: {0}.", info.ReleaseVersion)); return(false); } return(true); }
private void UpdatePluginDataVersion(PublishingVersionInfo info, PluginVersion version) { string url = string.Format("{0}/{1}", version.Url.Substring(0, version.Url.IndexOf(version.VersionNumber) - 1), info.ReleaseVersion); PluginVersion newVersion = new PluginVersion(version.Product as Plugin, info.ReleaseVersion, string.Empty, url); newVersion.Load(); newVersion.PluginData.Version = info.ReleaseVersion; newVersion.PluginData.Save(); }
private void Publish(PublishingVersionInfo info, DoWorkEventArgs e) { PluginVersion version = info.Version; string path = string.Empty; this.SetPublishingVersionStatus(info, PublishingStatus.Publishing); bool releaseExecuted = this.ExecuteRelease(info, version); if (!releaseExecuted) { this._completedWithErrors = true; return; } bool createdBeta = this.ExecuteCreateBeta(info, version, out path); if (!createdBeta) { this._completedWithErrors = true; return; } if (info.Type == PublishingType.Release) { this.UpdateReleasedAsPatchPluginDataVersion(info, version, path); } bool publisherExecuted = this.ExecutePublisher(info, e, version, path); if (!publisherExecuted) { this._completedWithErrors = true; return; } if (info.Type == PublishingType.Patch && info.CreatePatch) { bool patchCreated = this.ExecuteCreatePatch(info, version, info.ReleaseVersion); if (!patchCreated) { this._completedWithErrors = true; return; } this.UpdatePluginDataVersion(info, version); } else if (info.Type == PublishingType.Release && !info.ReleaseAsPatch) { this.UpdatePluginDataVersion(info, version); } this.SetPublishingVersionStatus(info, PublishingStatus.Succeeded); }
private void UpdateReleasedAsPatchPluginDataVersion(PublishingVersionInfo info, PluginVersion version, string path) { string pluginDataPath = string.Format(@"{0}\Program\Plugins\{1}\plugin.data", path, version.PluginData.Id); if (System.IO.File.Exists(pluginDataPath)) { PluginData pluginData = PluginData.Load(version, pluginDataPath); pluginData.Version = info.ReleaseVersion; pluginData.SaveLocal(pluginDataPath); } }
private bool ExecutePublisher(PublishingVersionInfo info, DoWorkEventArgs e, PluginVersion version, string path) { ProcessStartInfo startInfo = new ProcessStartInfo(this.PublishOptions.ExecutablePath); startInfo.Arguments = this.GetFormattedSilentPublishArgs(version, path); startInfo.WorkingDirectory = Path.GetDirectoryName(this.PublishOptions.ExecutablePath); startInfo.RedirectStandardError = true; startInfo.RedirectStandardOutput = true; startInfo.CreateNoWindow = true; startInfo.UseShellExecute = false; Process process = new Process(); process.StartInfo = startInfo; process.Start(); process.WaitForExit(); if (this._canceled) { e.Cancel = true; this.SetPublishingVersionStatus(info, PublishingStatus.Failed, "CANCELED."); return(false); } string message = string.Empty; using (StreamReader errorStream = process.StandardError) { if (errorStream.Peek() > -1) { message = errorStream.ReadToEnd(); if (message.Contains("CANCELED")) { e.Cancel = true; this.Cancel(message); return(false); } else { this.SetPublishingVersionStatus(info, PublishingStatus.Failed, message); return(false); } } } return(true); }
private bool ExecuteCreatePatch(PublishingVersionInfo info, PluginVersion version, string releaseVersion) { bool createdPatch = SVNManager.Instance.CreatePatch(version.Product.Name, version.VersionNumber, releaseVersion); if (!createdPatch) { this.SetPublishingVersionStatus( info, PublishingStatus.Failed, string.Format("Failed to create patch: {0}.", info.ReleaseVersion)); return(false); } return(true); }
private void SetPublishingVersionStatus(PublishingVersionInfo info, PublishingStatus status) { this.SetPublishingVersionStatus(info, status, string.Empty); }
private void SetPublishingVersionStatus(PublishingVersionInfo info, PublishingStatus status, string error) { info.SetStatus(status, error); }