Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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();
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
            }
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
 private void SetPublishingVersionStatus(PublishingVersionInfo info, PublishingStatus status)
 {
     this.SetPublishingVersionStatus(info, status, string.Empty);
 }
Beispiel #9
0
 private void SetPublishingVersionStatus(PublishingVersionInfo info, PublishingStatus status, string error)
 {
     info.SetStatus(status, error);
 }