Exemplo n.º 1
0
 public PublishProject(CommonProjectNode node, PublishProjectOptions options)
 {
     _statusBar = (IVsStatusbar)CommonPackage.GetGlobalService(typeof(SVsStatusbar));
     _statusBar.SetText("Starting publish...");
     _node    = node;
     _options = options;
 }
Exemplo n.º 2
0
        /// <summary>
        /// Publishes the project as configured by the user in the Publish option page.
        ///
        /// If async is true this function begins the publishing and returns w/o waiting for it to complete.  No errors are reported.
        ///
        /// If async is false this function waits for the publish to finish and raises a PublishFailedException with an
        /// inner exception indicating the underlying reason for the publishing failure.
        ///
        /// Returns true if the publish was succeessfully started, false if the project is not configured for publishing
        /// </summary>
        public bool Publish(PublishProjectOptions publishOptions, bool async)
        {
            string publishUrl = publishOptions.DestinationUrl ?? GetProjectProperty(CommonConstants.PublishUrl);
            bool   found      = false;

            if (!String.IsNullOrWhiteSpace(publishUrl))
            {
                var url = new Url(publishUrl);

                var publishers = CommonPackage.ComponentModel.GetExtensions <IProjectPublisher>();
                foreach (var publisher in publishers)
                {
                    if (publisher.Schema == url.Uri.Scheme)
                    {
                        var       project = new PublishProject(this, publishOptions);
                        Exception failure = null;
                        var       frame   = new DispatcherFrame();
                        var       thread  = new System.Threading.Thread(x => {
                            try {
                                publisher.PublishFiles(project, url.Uri);
                                project.Done();
                                frame.Continue = false;
                            } catch (Exception e) {
                                failure = e;
                                project.Failed(e.Message);
                                frame.Continue = false;
                            }
                        });
                        thread.Start();
                        found = true;
                        if (!async)
                        {
                            Dispatcher.PushFrame(frame);
                            if (failure != null)
                            {
                                throw new PublishFailedException(String.Format("Publishing of the project {0} failed", Caption), failure);
                            }
                        }
                        break;
                    }
                }

                if (!found)
                {
                    var statusBar = (IVsStatusbar)CommonPackage.GetGlobalService(typeof(SVsStatusbar));
                    statusBar.SetText(String.Format("Publish failed: Unknown publish scheme ({0})", url.Uri.Scheme));
                }
            }
            else
            {
                var statusBar = (IVsStatusbar)CommonPackage.GetGlobalService(typeof(SVsStatusbar));
                statusBar.SetText(String.Format("Project is not configured for publishing in project properties."));
            }
            return(found);
        }
Exemplo n.º 3
0
 public bool Publish(PublishProjectOptions options)
 {
     Debug.Fail("Unexpected DefaultPythonProject.Publish() call");
     return(false);
 }
Exemplo n.º 4
0
 bool IPythonProject.Publish(PublishProjectOptions options)
 {
     Debug.Assert(false, "Unexpected DefaultPythonProject.Publish() call");
     return(false);
 }
Exemplo n.º 5
0
 bool IPythonProject.Publish(PublishProjectOptions options)
 {
     return(base.Publish(options, false));
 }