Esempio n. 1
0
        public async System.Threading.Tasks.Task CancelBuildAsync(IBuildInformationModel buildInformationModel)
        {
            await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

            if (buildInformationModel.BuildAction == BuildAction.Clean)
            {
                return;
            }

            if (buildInformationModel.CurrentBuildState != BuildState.InProgress || _buildCancelled || _buildCancelledInternally)
            {
                return;
            }

            try
            {
                // We need to create a separate task here because of some weird things that are going on
                // when calling ExecuteCommand directly. Directly calling it leads to a freeze. No need
                // for that!
                var dte = _serviceProvider.GetService <DTE>();
                dte.ExecuteCommand(CancelBuildCommand);
                _buildCancelledInternally = true;
            }
            catch (Exception ex)
            {
                _logger.Error(ex, "Cancel build failed.");
            }
        }
Esempio n. 2
0
        private string GetBuildDoneExtraMessage(IBuildInformationModel buildInformationModel)
        {
            if (buildInformationModel.BuildStartTime == null || buildInformationModel.BuildFinishTime == null || !_packageSettingsProvider.Settings.BuildMessagesSettings.ShowExtraMessage)
            {
                return(string.Empty);
            }

            var timeSpan = buildInformationModel.BuildFinishTime.Value.Subtract(buildInformationModel.BuildStartTime.Value);

            return(GetExtraTimePartString(timeSpan));
        }
Esempio n. 3
0
        public string GetBuildBeginExtraMessage(IBuildInformationModel buildInformationModel)
        {
            if (buildInformationModel.BuildStartTime == null || !_packageSettingsProvider.Settings.BuildMessagesSettings.ShowExtraMessage || _packageSettingsProvider.Settings.BuildMessagesSettings.ExtraMessageDelay < 0)
            {
                return(string.Empty);
            }

            var timeSpan = DateTime.Now.Subtract(buildInformationModel.BuildStartTime.Value);

            if (timeSpan.TotalSeconds > _packageSettingsProvider.Settings.BuildMessagesSettings.ExtraMessageDelay)
            {
                return(GetExtraTimePartString(timeSpan));
            }

            return(string.Empty);
        }
Esempio n. 4
0
        private string GetMainString(IBuildInformationModel buildInformationModel)
        {
            var    unitName      = GetUnitName(buildInformationModel.BuildScope);
            var    actionName    = GetActionName(buildInformationModel.BuildAction);
            var    beginAtString = GetBeginAtString(buildInformationModel.BuildAction);
            var    timeString    = GetTimeString(buildInformationModel.BuildStartTime);
            string mainString;

            switch (_packageSettingsProvider.Settings.BuildMessagesSettings.MajorMessageFormat)
            {
            case BuildMajorMessageFormat.Entire:
                mainString = string.Format(Resources.BuildBeginStateLabelTemplate_Default, actionName, unitName, beginAtString, timeString);
                break;

            case BuildMajorMessageFormat.Unnamed:
                mainString = string.Format(Resources.BuildBeginStateLabelTemplate_ShortForm, actionName, beginAtString, timeString);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(_packageSettingsProvider.Settings.BuildMessagesSettings.MajorMessageFormat));
            }

            return(mainString);
        }
Esempio n. 5
0
        public string GetBuildBeginMajorMessage(IBuildInformationModel buildInformationModel)
        {
            var mainString = GetMainString(buildInformationModel);

            return(string.Format(_packageSettingsProvider.Settings.BuildMessagesSettings.BuildBeginMajorMessageStringFormat, mainString));
        }
Esempio n. 6
0
        private string GetBuildDoneMajorMessage(IBuildInformationModel buildInformationModel)
        {
            var buildAction = buildInformationModel.BuildAction;
            var buildScope  = buildInformationModel.BuildScope;

            if (buildInformationModel.BuildFinishTime == null)
            {
                throw new InvalidOperationException();
            }

            string timeString;

            try
            {
                timeString = buildInformationModel.BuildFinishTime.Value.ToString(_packageSettingsProvider.Settings.BuildMessagesSettings.DateTimeFormat);
            }
            catch (FormatException)
            {
                timeString = Resources.InvalidTimeStringFormat;
            }

            string unitName;

            switch (buildScope)
            {
            case BuildScope.Solution:
                unitName = Resources.BuildScopeSolution_UnitName;
                //if (_labelSettings.ShowSolutionName)
                //unitName += string.Format(Resources.BuildScopeSolution_SolutionNameTemplate, solutionItem.Name);
                break;

            case BuildScope.Batch:
                unitName = Resources.BuildScopeBatch_UnitName;
                break;

            case BuildScope.Project:
                unitName = Resources.BuildScopeProject_UnitName;
                if (_packageSettingsProvider.Settings.BuildMessagesSettings.ShowProjectName)
                {
                    // Todo this is probably wrong. maybe we should go the extra mile and check which projects are selected?
                    //var uniqProjName = solutionItem.Projects.LastOrDefault(x => x.State == ProjectState.BuildDone)?.UniqueName;
                    //var projItem = solutionItem.Projects.FirstOrDefault(item => item.UniqueName == uniqProjName);
                    //unitName += string.Format(Resources.BuildScopeProject_ProjectNameTemplate, projItem.Name);
                }
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(buildScope));
            }

            var actionName = GetActionName(buildInformationModel.BuildAction);
            var resultName = GetResultName(buildInformationModel.ResultState);

            string mainString;

            switch (_packageSettingsProvider.Settings.BuildMessagesSettings.MajorMessageFormat)
            {
            case BuildMajorMessageFormat.Entire:
                mainString = string.Format(Resources.BuildDoneStateLabelTemplate_Default, actionName, unitName, resultName, timeString);
                break;

            case BuildMajorMessageFormat.Unnamed:
                mainString = string.Format(Resources.BuildDoneStateLabelTemplate_ShortForm, actionName, resultName, timeString);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(_packageSettingsProvider.Settings.BuildMessagesSettings.MajorMessageFormat));
            }

            string resultMainString = string.Format(_packageSettingsProvider.Settings.BuildMessagesSettings.BuildDoneMajorMessageStringFormat, mainString);

            return(resultMainString);
        }
Esempio n. 7
0
 public string GetBuildDoneMessage(IBuildInformationModel buildInformationModel)
 {
     return(GetBuildDoneMajorMessage(buildInformationModel) + GetBuildDoneExtraMessage(buildInformationModel));
 }