public override async void Publish() { var project = _publishDialog.Project; try { ShellUtils.SaveAllFiles(); GcpOutputWindow.Activate(); GcpOutputWindow.Clear(); GcpOutputWindow.OutputLine(String.Format(Resources.GcePublishStepStartMessage, project.Name)); _publishDialog.FinishFlow(); bool result; using (var frozen = StatusbarHelper.Freeze()) using (var animationShown = StatusbarHelper.ShowDeployAnimation()) using (var progress = StatusbarHelper.ShowProgressBar(String.Format(Resources.GcePublishProgressMessage, SelectedInstance.Name))) using (var deployingOperation = ShellUtils.SetShellUIBusy()) { result = await WindowsVmDeployment.PublishProjectAsync( project.FullPath, SelectedInstance, SelectedCredentials, progress, (l) => GcpOutputWindow.OutputLine(l)); } if (result) { GcpOutputWindow.OutputLine(String.Format(Resources.GcePublishSuccessMessage, project.Name, SelectedInstance.Name)); StatusbarHelper.SetText(Resources.PublishSuccessStatusMessage); var url = SelectedInstance.GetDestinationAppUri(); GcpOutputWindow.OutputLine(String.Format(Resources.PublishUrlMessage, url)); if (OpenWebsite) { Process.Start(url); } } else { GcpOutputWindow.OutputLine(String.Format(Resources.GcePublishFailedMessage, project.Name)); StatusbarHelper.SetText(Resources.PublishFailureStatusMessage); } } catch (Exception ex) when(!ErrorHandlerUtils.IsCriticalException(ex)) { GcpOutputWindow.OutputLine(String.Format(Resources.GcePublishFailedMessage, project.Name)); StatusbarHelper.SetText(Resources.PublishFailureStatusMessage); } }
public void BeforeEach() { _toolsPathProviderMock = new Mock <IToolsPathProvider>(); VsVersionUtils.s_toolsPathProviderOverride = _toolsPathProviderMock.Object; _solutionBuildMock = new Mock <SolutionBuild>(); _activeConfigMock = new Mock <Configuration>(); _activeConfigMock.Setup(c => c.ConfigurationName).Returns(DefaultConfigurationName); _dteProjectMock = new Mock <IParsedDteProject> { DefaultValue = DefaultValue.Mock }; _dteProjectMock.Setup(p => p.Project.DTE.Solution.SolutionBuild).Returns(_solutionBuildMock.Object); _dteProjectMock.Setup(p => p.Project.ConfigurationManager.ActiveConfiguration) .Returns(_activeConfigMock.Object); _dteProjectMock.Setup(p => p.Project.UniqueName).Returns(DefaultUniqueName); _runCommandTask = Task.FromResult(true); _processServiceMock = new Mock <IProcessService>(); _processServiceMock .Setup( ps => ps.RunCommandAsync( It.IsAny <string>(), It.IsAny <string>(), It.IsAny <Func <string, OutputStream, Task> >(), It.IsAny <string>(), It.IsAny <IDictionary <string, string> >())) .Callback <string, string, Func <string, OutputStream, Task>, string, IDictionary <string, string> >( (path, parameters, handler, workingDir, env) => { _path = path; _parameters = parameters; _handler = handler; }) .Returns(() => _runCommandTask); _gcpOutputWindowMock = new Mock <IGcpOutputWindow>(); _statusbarServiceMock = new Mock <IStatusbarService> { DefaultValue = DefaultValue.Mock }; _shellUtilsMock = new Mock <IShellUtils> { DefaultValue = DefaultValue.Mock }; _objectUnderTest = new WindowsVmDeployment( _processServiceMock.ToLazy(), _shellUtilsMock.ToLazy(), _statusbarServiceMock.ToLazy(), _gcpOutputWindowMock.ToLazy()); }
public override async void Publish() { var project = _publishDialog.Project; try { ShellUtils.SaveAllFiles(); GcpOutputWindow.Activate(); GcpOutputWindow.Clear(); GcpOutputWindow.OutputLine(String.Format(Resources.GcePublishStepStartMessage, project.Name)); _publishDialog.FinishFlow(); TimeSpan deploymentDuration; bool result; using (var frozen = StatusbarHelper.Freeze()) using (var animationShown = StatusbarHelper.ShowDeployAnimation()) using (var progress = StatusbarHelper.ShowProgressBar(String.Format(Resources.GcePublishProgressMessage, SelectedInstance.Name))) using (var deployingOperation = ShellUtils.SetShellUIBusy()) { var startDeploymentTime = DateTime.Now; result = await WindowsVmDeployment.PublishProjectAsync( project, SelectedInstance, SelectedCredentials, progress, VsVersionUtils.ToolsPathProvider, GcpOutputWindow.OutputLine); deploymentDuration = DateTime.Now - startDeploymentTime; } if (result) { GcpOutputWindow.OutputLine(String.Format(Resources.GcePublishSuccessMessage, project.Name, SelectedInstance.Name)); StatusbarHelper.SetText(Resources.PublishSuccessStatusMessage); var url = SelectedInstance.GetDestinationAppUri(); GcpOutputWindow.OutputLine(String.Format(Resources.PublishUrlMessage, url)); if (OpenWebsite) { Process.Start(url); } EventsReporterWrapper.ReportEvent(GceDeployedEvent.Create(CommandStatus.Success, deploymentDuration)); } else { GcpOutputWindow.OutputLine(String.Format(Resources.GcePublishFailedMessage, project.Name)); StatusbarHelper.SetText(Resources.PublishFailureStatusMessage); EventsReporterWrapper.ReportEvent(GceDeployedEvent.Create(CommandStatus.Failure)); } } catch (Exception ex) when(!ErrorHandlerUtils.IsCriticalException(ex)) { GcpOutputWindow.OutputLine(String.Format(Resources.GcePublishFailedMessage, project.Name)); StatusbarHelper.SetText(Resources.PublishFailureStatusMessage); EventsReporterWrapper.ReportEvent(GceDeployedEvent.Create(CommandStatus.Failure)); } }